是的,Airflow和Jupyter应该分别独立成2个docker容器。
以下是一个示例docker-compose.yml文件,演示如何将它们分为2个独立的容器。
version: '3'
services:
airflow:
build: ./airflow
ports:
- "8080:8080"
volumes:
- ./dags:/usr/local/airflow/dags
- ./logs:/usr/local/airflow/logs
- ./plugins:/usr/local/airflow/plugins
environment:
- AIRFLOW__CORE__SQL_ALCHEMY_CONN=postgresql+psycopg2://user:password@database:5432/airflow
- AIRFLOW__CORE__EXECUTOR=LocalExecutor
depends_on:
- database
jupyter:
build: ./jupyter
ports:
- "8888:8888"
volumes:
- ./notebooks:/home/jupyter/notebooks
depends_on:
- database
database:
image: postgres:13
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
- POSTGRES_DB=airflow
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
在这个例子中,我们使用了一个数据库服务(PostgreSQL),并将其与Airflow和Jupyter容器一起运行。具体地,我们将Airflow容器映射到本地的8080端口,将Jupyter容器映射到本地的8888端口,并分别将它们的代码映射到本地的./dags和./notebooks目录中。我们还将数据库用作支持服务,并与Airflow和Jupyter容器分别关联起来。
使用这个docker-compose.yml文件,您可以使用以下命令启动整个堆栈:
docker-compose up -d
请注意,这是一个简单的示例,您可能需要根据自己的需