从您的问题来看,您将受益于尝试独立于气流独立 dockerise dbt。你的很多问题都会消失。但无论如何,这是我的答案。
-
DBT 作为一个整体项目应该作为一个 Docker 容器运行,还是分解?(例如:测试是否作为独立于 dbt 任务的容器运行?)
我建议你为整个项目构建一个 docker 镜像。docker 镜像可以基于 python 镜像,因为 dbt 是一个 python CLI 工具。然后,您可以使用 docker 映像的 CMD 参数来运行您将在 docker 之外运行的任何 dbt 命令。请记住docker run
(与 dbt 无关)的语法:您可以指定任何您想在调用时运行的 COMMAND
$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
此外,“docker dbt”在 Google 上的第一次点击是可以帮助您入门的dockerfile
-
通过 Docker Operator 运行时,来自 DBT 的日志和 UI 是否可访问和/或仍然有用?
同样,这不是 dbt 问题,而是 docker 问题或气流问题。
使用 DockerOperator 时,您能在气流 UI 中看到日志吗?是的,请参阅如何使用屏幕截图发布博客文章。
您可以从 docker 容器访问日志吗?是的,Docker 容器将日志发送到stdout
并stderr
输出流(您可以在气流中看到,因为气流会拾取它)。但日志也存储在主机上某个文件夹中的 JSON 文件中/var/lib/docker/containers/
。如果您有任何高级需求,您可以使用工具(或简单的 BashOperator 或 PythonOperator)获取这些日志,然后使用它执行您需要的操作。
-
部分管道将如何运行?(例如:只想运行管道的一部分)
请参阅答案 1,您将使用以下命令运行 docker dbt 映像
$ docker run my-dbt-image dbt run -m stg_customers