我正在尝试将airflow
jetty 化,我的Dockerfile
看起来像这样
FROM python:3.5.2
RUN mkdir -p /src/airflow
RUN mkdir -p /src/airflow/logs
RUN mkdir -p /src/airflow/plugins
WORKDIR /src
COPY . .
RUN pip install psycopg2
RUN pip install -r requirements.txt
COPY airflow.cfg /src/airflow
ENV AIRFLOW_HOME /src/airflow
ENV PYTHONPATH "${PYTHONPATH}:/src"
RUN airflow initdb
EXPOSE 8080
ENTRYPOINT ./airflow-start.sh
而我的
docker-compose.yml
看起来像这样version: "3"
services:
airflow:
container_name: airflow
network_mode: host
build:
context: .
dockerfile: Dockerfile
ports:
- 8080:8080
像通常一样显示
$ docker-compose build
的输出,执行每个步骤,然后Step 12/14 : RUN airflow initdb
---> Running in 8b7ebe406978
[2020-04-21 10:34:21,419] {__init__.py:45} INFO - Using executor LocalExecutor
Traceback (most recent call last):
File "/usr/local/bin/airflow", line 17, in <module>
from airflow.bin.cli import CLIFactory
File "/usr/local/lib/python3.5/site-packages/airflow/bin/cli.py", line 59, in <module>
from airflow.www.app import cached_app
File "/usr/local/lib/python3.5/site-packages/airflow/www/app.py", line 20, in <module>
from flask_cache import Cache
File "/usr/local/lib/python3.5/site-packages/flask_cache/__init__.py", line 24, in <module>
from werkzeug import import_string
ImportError: cannot import name 'import_string'
ERROR: Service 'airflow' failed to build: The command '/bin/sh -c airflow initdb' returned a non-zero code: 1
postgres
在主机系统上运行。我尝试了多种方法,但是这种情况一直在发生。
我什至尝试了
puckel/docker-airflow
图片,并发生了相同的错误。有人可以告诉我我在做什么错吗?
项目结构:
root
-airflow_dags
-Dockerfile
-docker-compose.yml
-airflow-start.sh
-airflow.cfg
如果相关的话:airflow-start.sh
在
airflow.cfg
中:dags_folder = /src/airflow_dags/
sql_alchemy_conn = postgresql://airflow:airflow@localhost:5432/airflow
最佳答案
这很可能与werkzeug软件包的气流错误有关,或者您的要求可能使某些事情变得无聊。
我建议检查环境中使用的气流, flask 和werkzueg的版本。可能是您需要按照here固定flask或werkzueg的版本。
关于python - Docker中的 Airflow initdb引发ImportError:无法导入名称 'import_string',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61341894/