当我在 Apache guide to airflow in Docker 之后创建一个虚拟 DAG 并运行 docker-compose up
时,webserver
容器反复失败并重新启动,错误如下:
webserver_1 | [2021-07-26 18:44:42,905] {cli_action_loggers.py:105} WARNING - Failed to log action with (psycopg2.errors.UndefinedTable) relation "log" does not exist
webserver_1 | LINE 1: INSERT INTO log (dttm, dag_id, task_id, event, execution_dat...
此错误向我表明网络服务器无法初始化气流数据库。这个虚拟 DAG 使用 Airflow 2 和 CeleryExecutor
。我在使用 Airflow 2 和 LocalExecutor
之后的 this example 以及我团队的当前设置(使用 Airflow 1 和 CeleryExecutor
)后遇到了同样的问题。
让我感到困惑的是,我的队友可以毫无问题地运行基于我们的 docker-compose 的 DAG(据推测,其他人可以成功运行 Apache 的官方快速入门)。所以我的机器有问题(可能与 Postgres 相关)以某种方式影响了我的 Docker 镜像。在几种不同的 docker-compose
气流设置中,什么可能导致此错误?
到目前为止我尝试过的:
libpq
、postgres
和 psycopg2
(虽然理论上这对于 Docker 环境应该无关紧要?)我使用的是 Docker 20.10.7 版和 docker-compose 1.29.2 版。
答案 0 :(得分:0)
我相信您没有遵循“开始之前”的步骤并增加了 Docker 所需的内存 https://airflow.apache.org/docs/apache-airflow/stable/start/docker.html#before-you-begin
Docker for Mac 的默认设置,没有为 Docker 提供足够的内存来运行 Airflow。
答案 1 :(得分:0)
通过使用 docker system prune
彻底清除我的计算机上的 Docker 工件,我能够解决这个问题。我运行了以下命令:
docker system prune --all
docker system prune --all --volumes
我之前从我的计算机中清除 Docker 工件的尝试没有完成;杀死和删除容器以及卸载/重新安装 Docker 是不够的。