我正在使用docker-compose
来运行多个芹菜工作程序,并努力使工作程序以我想要的方式使用此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
。
问题是所有的工人都在使用相同的tor服务。我想为每个工人提供一个单独的高山托儿服务。这可能与docker-compose
有关吗?如果是,我应该做些什么来实现这一点?
您可以尝试将worker
作为5个不同的docker-compose服务运行(但都使用相同的worker
映像(,也可以将tor
服务作为5个相同的docker-compose服务来运行(同样,使用同一个tor
映像(。
对于5个worker
服务中的每一个,您都可以传入一个环境变量,指示您希望工作人员与哪个tor
服务进行通信。然后,在您的worker中,您可以在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:
...