2017-04-07 83 views
2

我一直在想,为此寻找解决方案,我没有找到任何。docker-compose和优雅的芹菜关机

我在用docker-compose构建的容器中运行芹菜。我的容器配置是这样的:

celery: 
    build: . 
    container_name: cl01 
    env_file: ./config/variables.env 
    entrypoint: 
    - /celery-entrypoint.sh 
    volumes: 
    - ./django:/django 
    depends_on: 
    - web 
    - db 
    - redis 
    stop_grace_period: 1m 

我的入口点的脚本是这样的:

#!/bin/sh 
# Wait for django 
sleep 10 
su -m dockeruser -c "celery -A myapp worker -l INFO" 

现在,如果我跑docker-compose stop,我想有一个温暖(优美)关机,给芹菜提供1分钟(stop_grace_period)完成已开始的任务。但docker-compose stop似乎直接杀死芹菜。芹菜还应该记录它被要求优雅地关闭,但我没有看到任何东西,只是突然停止我的任务日志。

我在做什么错,或者我需要改变什么才能让Celery优雅地关闭?

编辑: 建议的答案在下面提供的--timeout参数docker-compose stop不能解决我的问题。

回答

1

通过docs

Usage: stop [options] [SERVICE...] 

Options: 
-t, --timeout TIMEOUT  Specify a shutdown timeout in seconds (default: 10). 

尝试用超时至少设置为60秒。

+0

似乎没有工作。有趣的是,芹菜,芹菜Beat和花是几秒钟内关闭的第一件事情。 nginx,django,redis等都在60秒后花时间关闭。 还有一个问题:我想这正是docker-compose.yml中的'stop_grace_period'参数的意思吗?所以你不需要在运行bash命令时设置超时。 – JanBrinker

+0

嗯,是的,但你只为芹菜服务设置它,当设置超时运行时,'docker-compose stop'应该适用于所有容器。我不知道为什么它以这种方式关闭。 –