为什么我的气流网络服务器不能正确初始化?

时间:2021-07-26 19:47:36

标签: postgresql docker docker-compose airflow psycopg2

当我在 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 气流设置中,什么可能导致此错误?

到目前为止我尝试过的:

  • 重新启动我的计算机
  • 杀死、删除和重建我的 Docker 镜像
  • 为 Mac 重新安装 Docker
  • 在我的本地机器上卸载并重新安装 libpqpostgrespsycopg2(虽然理论上这对于 Docker 环境应该无关紧要?)

我使用的是 Docker 20.10.7 版和 docker-compose 1.29.2 版。

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 是不够的。