gpt4 book ai didi

docker - 如何与每个容器 celery worker 一起使用单独的容器服务?

转载 作者:行者123 更新时间:2023-12-02 18:25:38 25 4
gpt4 key购买 nike

我正在使用docker-compose运行多个celery worker ,并努力使 worker 以我想要的方式使用此zeta0/alpine-tor旋转代理池镜像。
目前,我的docker-compose.yml看起来像这样:

version: '3'
services:
worker:
build:
context: .
dockerfile: dockerfile
volumes:
- type: bind
source: .
target: /app
links:
- rabbit
- tor
depends_on:
- rabbit
- tor
rabbit:
hostname: rabbit
image: rabbitmq:latest
environment:
- RABBITMQ_DEFAULT_USER=myuser
- RABBITMQ_DEFAULT_PASS=mypassword
ports:
- "5672:5672"
tor:
hostname: tor
image: zeta0/alpine-tor
environment:
- tors=25
- privoxy=1
- new_circuit_period=10
ports:
- "8118:8118"
- "2090:2090"
然后我运行: docker-compose up --scale worker=5
问题是所有 worker 都使用相同的Tor服务。我想为每个 worker 提供单独的 Alpine 培训服务。这可能与 docker-compose有关吗?如果是这样,我应该怎么做才能做到这一点?

最佳答案

您可以尝试将worker作为5个不同的docker-compose服务运行(但全部使用相同的worker图像),也可以将tor服务作为5个不同的docker-compose服务运行(同样,使用相同的tor图像)。
对于5个worker服务中的每一个,您都可以传入一个环境变量,以指示您希望工作人员与之通信的tor服务。然后,在工作人员中,可以在tor URL中使用此环境变量。
因此,您的docker-compose.yml看起来像这样(为简洁起见删除了一些配置):

version: '3'
services:
worker_1:
environment:
- TOR_SERVICE=tor_1
...
worker_2:
environment:
- TOR_SERVICE=tor_2
...
worker_3:
environment:
- TOR_SERVICE=tor_3
...
worker_4:
environment:
- TOR_SERVICE=tor_4
...
worker_5:
environment:
- TOR_SERVICE=tor_5
...
rabbit:
hostname: rabbit
image: rabbitmq:latest
environment:
- RABBITMQ_DEFAULT_USER=myuser
- RABBITMQ_DEFAULT_PASS=mypassword
ports:
- "5672:5672"
tor_1:
...
tor_2:
...
tor_3:
...
tor_4:
...
tor_5:
...

关于docker - 如何与每个容器 celery worker 一起使用单独的容器服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64103684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com