Python 在多个端口上创建docker的副本
我想做的是——用芹菜在docker中运行气流 我的问题-我的芹菜工人在容器里,我不知道如何缩放它们 我的docker文件:Python 在多个端口上创建docker的副本,python,docker,celery,docker-compose,airflow,Python,Docker,Celery,Docker Compose,Airflow,我想做的是——用芹菜在docker中运行气流 我的问题-我的芹菜工人在容器里,我不知道如何缩放它们 我的docker文件: version: '2' services: mysql: image: mysql:latest restart: always ports: - "3306:3306" environment: - MYSQL_RANDOM_ROOT_PASSWORD=true - MYSQL_US
version: '2'
services:
mysql:
image: mysql:latest
restart: always
ports:
- "3306:3306"
environment:
- MYSQL_RANDOM_ROOT_PASSWORD=true
- MYSQL_USER=airflow
- MYSQL_PASSWORD=airflow
- MYSQL_DATABASE=airflow
volumes:
- mysql:/var/lib/mysql
rabbitmq:
image: rabbitmq:3-management
restart: always
ports:
- "15672:15672"
- "5672:5672"
- "15671:15671"
environment:
- RABBITMQ_DEFAULT_USER=airflow
- RABBITMQ_DEFAULT_PASS=airflow
- RABBITMQ_DEFAULT_VHOST=airflow
volumes:
- rabbitmq:/var/lib/rabbitmq
webserver:
image: airflow:ver5
restart: always
volumes:
- ~/airflow/dags:/usr/local/airflow/dags
- /opt/scripts:/opt/scripts
environment:
- AIRFLOW_HOME=/usr/local/airflow
ports:
- "8080:8080"
links:
- mysql:mysql
- rabbitmq:rabbitmq
- worker:worker
- scheduler:scheduler
depends_on:
- mysql
- rabbitmq
- worker
- schedulerv
command: webserver
env_file: ./airflow.env
scheduler:
image: airflow:ver5
restart: always
volumes:
- ~/airflow/dags:/usr/local/airflow/dags
- /opt/scripts:/opt/scripts
environment:
- AIRFLOW_HOME=/usr/local/airflow
links:
- mysql:mysql
- rabbitmq:rabbitmq
depends_on:
- mysql
- rabbitmq
command: scheduler
env_file: ./airflow.env
worker:
image: airflow:ver5
restart: always
volumes:
- ~/airflow/dags:/usr/local/airflow/dags
- /opt/scripts:/opt/scripts
environment:
- AIRFLOW_HOME=/usr/local/airflow
ports:
- "8793:8793"
links:
- mysql:mysql
- rabbitmq:rabbitmq
depends_on:
- mysql
- rabbitmq
command: worker
env_file: ./airflow.env
因此,我使用上述文件运行docker compose命令,当我从docker端口映射到localhost时,它在localhost上的端口8793上启动一个worker实例。现在,我要做的是扩大我拥有的工人数量,为此,我使用以下命令:
docker-compose -f docker-compose.yml scale worker=5
但这会给出一个错误,因为worker的一个实例已经在8793上运行。有没有一种方法可以在我扩展时动态地将端口分配给工作容器的新实例?您可以允许您的工作节点以随机端口号向主机公开工作端口:
worker:
image: airflow:ver5
restart: always
volumes:
- ~/airflow/dags:/usr/local/airflow/dags
- /opt/scripts:/opt/scripts
environment:
- AIRFLOW_HOME=/usr/local/airflow
ports:
- "8793"
links:
- mysql:mysql
- rabbitmq:rabbitmq
depends_on:
- mysql
- rabbitmq
command: worker
env_file: ./airflow.env
将端口:
设置为-80
将容器中的端口80暴露给主机上的随机端口
因为Docker Compose使用网络,所以实际上可以完全省略这个发布步骤,这样就可以了。因此,只需从worker中删除端口: