如何在 Airflow (docker-compose) 中安装包?
How to install packages in Airflow (docker-compose)?
问题与the one already available非常相似。唯一的区别是我 运行 Airflow in docker
一步一步:
- 将docker-compose.yaml放入PyCharm项目
- 将
requirements.txt
放入 PyCharm 项目
- 运行
docker-compose up
- 运行 DAG 并收到
ModuleNotFoundError
我想使用 requirements.txt
中的依赖项启动 Airflow using docker-compose。 PyCharm 解释器和 DAG 执行期间
应该可以使用这些依赖项
有没有不需要重建镜像的解决方案?
在 airflow GitHub 讨论中获得 the answer。现在唯一的方法是安装额外的 python 软件包来构建您自己的映像。我会尝试更详细地解释这个解决方案
步骤1.将Dockerfile
、docker-compose.yaml
和requirements.txt
文件放到项目目录
步骤 2. 粘贴到下面的 Dockefile 代码:
FROM apache/airflow:2.1.0
COPY requirements.txt .
RUN pip install -r requirements.txt
步骤 3. 粘贴到 docker-compose.yaml
代码,您可以找到 in the official documentation。将 image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.1.0}
部分替换为 build: .
:
---
version: '3'
x-airflow-common:
&airflow-common
build: .
# REPLACED # image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.1.0}
environment:
&airflow-common-env
AIRFLOW__CORE__EXECUTOR: CeleryExecutor
AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow
AIRFLOW__CELERY__RESULT_BACKEND: db+postgresql://airflow:airflow@postgres/airflow
AIRFLOW__CELERY__BROKER_URL: redis://:@redis:6379/0
AIRFLOW__CORE__FERNET_KEY: ''
AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: 'true'
AIRFLOW__CORE__LOAD_EXAMPLES: 'false'
AIRFLOW__API__AUTH_BACKEND: 'airflow.api.auth.backend.basic_auth'
volumes:
- ./dags:/opt/airflow/dags
- ./logs:/opt/airflow/logs
- ./plugins:/opt/airflow/plugins
user: "${AIRFLOW_UID:-50000}:${AIRFLOW_GID:-50000}"
depends_on:
redis:
condition: service_healthy
postgres:
condition: service_healthy
# ...
此时您的项目目录应该如下所示:
airflow-project
|docker-compose.yaml
|Dockerfile
|requirements.txt
第 4 步。 运行 docker-compose up
启动 Airflow,docker-compose
应该从 Dockerfile
自动构建您的图像。 运行 docker-compose build
重建镜像并更新依赖关系
另一种方法是更新您的文件 docker-compose.yml,将您需要的所有命令放在下面的行中
command: -c "pip3 install apache-airflow-providers-sftp apache-airflow-providers-ssh --user"
并重建图像
docker-compose up airflow-init
docker-compose up
Is there a solution that doesn't require rebuilding the image?
是的,现在有:目前(oct-2021 v2.2.0)它可以作为环境变量使用:
_PIP_ADDITIONAL_REQUIREMENTS
在docker-compose.yml文件中使用。
正如其他一些答案所解释的那样,这应该可以在不构建完整图像的情况下解决问题(实际上很好:-)
参见:https://airflow.apache.org/docs/apache-airflow/stable/docker-compose.yaml
问题与the one already available非常相似。唯一的区别是我 运行 Airflow in docker
一步一步:
- 将docker-compose.yaml放入PyCharm项目
- 将
requirements.txt
放入 PyCharm 项目 - 运行
docker-compose up
- 运行 DAG 并收到
ModuleNotFoundError
我想使用 requirements.txt
中的依赖项启动 Airflow using docker-compose。 PyCharm 解释器和 DAG 执行期间
有没有不需要重建镜像的解决方案?
在 airflow GitHub 讨论中获得 the answer。现在唯一的方法是安装额外的 python 软件包来构建您自己的映像。我会尝试更详细地解释这个解决方案
步骤1.将Dockerfile
、docker-compose.yaml
和requirements.txt
文件放到项目目录
步骤 2. 粘贴到下面的 Dockefile 代码:
FROM apache/airflow:2.1.0
COPY requirements.txt .
RUN pip install -r requirements.txt
步骤 3. 粘贴到 docker-compose.yaml
代码,您可以找到 in the official documentation。将 image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.1.0}
部分替换为 build: .
:
---
version: '3'
x-airflow-common:
&airflow-common
build: .
# REPLACED # image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.1.0}
environment:
&airflow-common-env
AIRFLOW__CORE__EXECUTOR: CeleryExecutor
AIRFLOW__CORE__SQL_ALCHEMY_CONN: postgresql+psycopg2://airflow:airflow@postgres/airflow
AIRFLOW__CELERY__RESULT_BACKEND: db+postgresql://airflow:airflow@postgres/airflow
AIRFLOW__CELERY__BROKER_URL: redis://:@redis:6379/0
AIRFLOW__CORE__FERNET_KEY: ''
AIRFLOW__CORE__DAGS_ARE_PAUSED_AT_CREATION: 'true'
AIRFLOW__CORE__LOAD_EXAMPLES: 'false'
AIRFLOW__API__AUTH_BACKEND: 'airflow.api.auth.backend.basic_auth'
volumes:
- ./dags:/opt/airflow/dags
- ./logs:/opt/airflow/logs
- ./plugins:/opt/airflow/plugins
user: "${AIRFLOW_UID:-50000}:${AIRFLOW_GID:-50000}"
depends_on:
redis:
condition: service_healthy
postgres:
condition: service_healthy
# ...
此时您的项目目录应该如下所示:
airflow-project
|docker-compose.yaml
|Dockerfile
|requirements.txt
第 4 步。 运行 docker-compose up
启动 Airflow,docker-compose
应该从 Dockerfile
自动构建您的图像。 运行 docker-compose build
重建镜像并更新依赖关系
另一种方法是更新您的文件 docker-compose.yml,将您需要的所有命令放在下面的行中
command: -c "pip3 install apache-airflow-providers-sftp apache-airflow-providers-ssh --user"
并重建图像
docker-compose up airflow-init
docker-compose up
Is there a solution that doesn't require rebuilding the image?
是的,现在有:目前(oct-2021 v2.2.0)它可以作为环境变量使用:
_PIP_ADDITIONAL_REQUIREMENTS
在docker-compose.yml文件中使用。 正如其他一些答案所解释的那样,这应该可以在不构建完整图像的情况下解决问题(实际上很好:-)
参见:https://airflow.apache.org/docs/apache-airflow/stable/docker-compose.yaml