![](/img/trans.png)
[英]How to setup remote debug for Airflow running with official docker-compose?
[英]How to install packages in Airflow (docker-compose)?
这个问题与已有的问题非常相似。 唯一的区别是我在 docker 中运行了 Airflow
一步步:
requirements.txt
放到 PyCharm 项目中docker-compose up
ModuleNotFoundError
我想使用 docker-compose和requirements.txt
的依赖项启动 Airflow 。 PyCharm 解释器和 DAG 执行期间应该可以使用这些依赖项
是否有不需要重建图像的解决方案?
在 airflow GitHub 讨论中得到了答案。 现在安装额外的 python 包以构建您自己的映像的唯一方法。 我将尝试更详细地解释此解决方案
Step 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
代码,您可以在官方文档中找到该代码。 将部分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
重建镜像并更新依赖
是否有不需要重建图像的解决方案?
是的,现在有:目前(oct-2021 v2.2.0)它可作为环境变量使用:
_PIP_ADDITIONAL_REQUIREMENTS
它在 docker-compose.yml 文件中使用。 正如其他一些答案所解释的那样,这应该可以在不构建完整图像的情况下解决问题(实际上很好:-)
请参阅: https://airflow.apache.org/docs/apache-airflow/stable/docker-compose.yaml
另一种选择是更新您的文件 docker-compose.yml,将以下行与您需要的所有命令一起放入
command: -c "pip3 install apache-airflow-providers-sftp apache-airflow-providers-ssh --user"
并重建图像
docker-compose up airflow-init
docker-compose up
Check what Airflow image your docker-compose.yaml is using and use that image, in my case it's: apache/airflow:2.3.2
I same folder where you have your docker-compose.yaml
create Dockerfile
with following content:
FROM apache/airflow:2.3.2
COPY requirements.txt /requirements.txt
RUN pip install --user --upgrade pip
RUN pip install --no-cache-dir --user -r /requirements.txt
在同一文件夹中运行:
docker build . --tag pyrequire_airflow:2.3.2
在docker-compose.yaml
下查找AIRFLOW_IMAGE_NAME
中使用的 airflow 图像的名称。 改变:
image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.3.2}
至:
image: ${AIRFLOW_IMAGE_NAME:-pyrequire_airflow:2.3.2}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.