2

我猜我的 docker 容器设置有点糟糕。因为每次我从 django 运行任务时,我都会在 docker 容器输出中看到ps aux创建了新进程python mange.py rqworker mail而不是使用现有进程。请参阅截屏视频:https ://imgur.com/a/HxUjzJ5

在我的 docker compose for rq worker 容器中执行的过程command如下所示。

#!/bin/sh -e

wait-for-it

for KEY in $(redis-cli -h $REDIS_HOST -n 2 KEYS "rq:worker*"); do
    redis-cli -h $REDIS_HOST -n 2  DEL $KEY
done

if [ "$ENVIRONMENT" = "development" ]; then
    python manage.py rqworkers --worker-class rq.SimpleWorker --autoreload;
else
    python manage.py rqworkers --worker-class rq.SimpleWorker --workers 4;
fi

我是 docker 新手,有点想知道这是在没有 deamonization 的情况下像这样开始的......但这是一种 dockerish 的做事方式,对吗?

4

1 回答 1

4

这就是我使用 docker-compose 所做的:

version: '3'

services:
  web:
    build: .
    image: mysite
    [...]
  rqworker:
    image: mysite
    command: python manage.py rqworker
    [...]
  rqworker_high:
    image: mysite
    command: python manage.py rqworker high
    [...]

然后开始:

$ docker-compose up --scale rqworker_high=4
于 2019-09-12T14:47:44.580 回答