【问题标题】:Can't access webserver of airflow after run the container运行容器后无法访问气流网络服务器
【发布时间】:2019-04-28 16:13:21
【问题描述】:

我从 docker hub 拉取了最新版本的气流图像。

apache/airflow

我尝试基于此图像运行容器。

docker run -d -p 127.0.0.1:5000:5000 apache/airflow webserver

容器正在运行,端口状态正常。但我仍然无法从浏览器访问气流网络服务器。

无法访问此站点。 127.0.0.1 拒绝连接。

几分钟后,容器会自动停止。

有没有人可以建议?

【问题讨论】:

  • 您尝试过什么调试?容器中是否有任何有趣的日志?容器内的服务是否真的在监听 5000 端口?

标签: docker airflow


【解决方案1】:

我没有使用气流的经验,但这是您修复此图像以运行的方式:

首先,您必须覆盖入口点,因为现有的入口点并没有多大帮助。据我了解,此图像需要 2 个步骤才能运行:initdb 和 webserver。由于这个原因,现有的入口点没有用。

运行:

docker run -p 5000:8080 --entrypoint /bin/bash -ti  apache/airflow

这将在正在运行的容器中打开一个外壳。另请注意,我在容器内映射了端口 8080。

然后在容器内运行:

airflow db init
airflow webserver -p 8080

请注意,在旧版本的气流中,初始化数据库的命令是airflow initdb,而不是airflow db init

打开浏览器并导航到 http://localhost:5000

当你关闭容器时,你的工作就消失了;)

您可以做的另一件事是将 2 个气流命令放入 bash 脚本中,并将该脚本映射到容器内并将其用作入口点。像这样的:

docker run -p 5000:8080 -v $(pwd)/startup.sh:/opt/airflow/startup.sh --entrypoint /opt/airflow/startup.sh -d --name airflow apache/airflow 

在运行它之前,你应该让 startup.sh 可执行。

如果您遇到问题,请告诉我。

【讨论】:

  • 感谢您的指导!有用!在阅读了相关文档和Dockerfile之后,我学到了很多东西。
  • 我发现没有 apache/airflow:latest docker 镜像(如果没有提供标签,它默认为 :latest)。所以要选一个比如:apache/airflow:master-python3.7-ci 初始化数据库的命令也改成:airflow db init
  • 谢谢,它成功了。小变化气流初始化数据库==>气流数据库初始化
猜你喜欢
  • 1970-01-01
  • 2018-06-09
  • 1970-01-01
  • 1970-01-01
  • 2021-03-06
  • 1970-01-01
  • 1970-01-01
  • 2023-03-07
  • 2021-06-12
相关资源
最近更新 更多