如何使用 docker-compose 构建不同配置的芹菜工人?
How to build differently configured celery workers using docker-compose?
我正在使用 docker-compose 构建和 运行 芹菜工人。
services:
...
worker-a:
command: celery -A tasks worker -l "DEBUG" --concurrency=1 -Q qname_a
restart: always
environment:
WORKER_TYPE: a_setting
...
depends_on:
- ...
worker-b:
command: celery -A tasks worker -l "DEBUG" --concurrency=1 -Q qname_b
restart: always
environment:
WORKER_TYPE: b_setting
...
depends_on:
- ...
如何构建 2 个不同的工作映像(worker-a 和 worker-b),它们执行相同的任务(相同的代码),但使用不同的配置(基于 WORKER_TYPE)并听取不同的声音排队?
如果您的目标是避免重复一段几乎相同的代码,YAML 锚点非常适合定义可重用块。
例如,在下面的配置中,worker-a
的所有配置都可以通过调用 <<: *default
被任何其他服务使用,然后根据需要覆盖任何值:
version: '3'
services:
worker-a: &default
image: alpine
command: env
environment:
WORKER_TYPE: a_setting
# ... more definitions
worker-b:
<<: *default
environment:
WORKER_TYPE: b_setting
请注意,如果您希望嵌套元素(例如 environment
)也具有共同的值,您可能需要执行以下操作:
version: '3'
services:
worker-a: &default
image: alpine
command: env
environment: &environment
COMMON_VAR_FOR_ALL: value
WORKER_TYPE: a_setting
# ... more definitions
worker-b:
<<: *default
environment:
<<: *environment
WORKER_TYPE: b_setting
我正在使用 docker-compose 构建和 运行 芹菜工人。
services:
...
worker-a:
command: celery -A tasks worker -l "DEBUG" --concurrency=1 -Q qname_a
restart: always
environment:
WORKER_TYPE: a_setting
...
depends_on:
- ...
worker-b:
command: celery -A tasks worker -l "DEBUG" --concurrency=1 -Q qname_b
restart: always
environment:
WORKER_TYPE: b_setting
...
depends_on:
- ...
如何构建 2 个不同的工作映像(worker-a 和 worker-b),它们执行相同的任务(相同的代码),但使用不同的配置(基于 WORKER_TYPE)并听取不同的声音排队?
如果您的目标是避免重复一段几乎相同的代码,YAML 锚点非常适合定义可重用块。
例如,在下面的配置中,worker-a
的所有配置都可以通过调用 <<: *default
被任何其他服务使用,然后根据需要覆盖任何值:
version: '3'
services:
worker-a: &default
image: alpine
command: env
environment:
WORKER_TYPE: a_setting
# ... more definitions
worker-b:
<<: *default
environment:
WORKER_TYPE: b_setting
请注意,如果您希望嵌套元素(例如 environment
)也具有共同的值,您可能需要执行以下操作:
version: '3'
services:
worker-a: &default
image: alpine
command: env
environment: &environment
COMMON_VAR_FOR_ALL: value
WORKER_TYPE: a_setting
# ... more definitions
worker-b:
<<: *default
environment:
<<: *environment
WORKER_TYPE: b_setting