Docker 如何在停靠环境中从sh脚本启动守护进程芹菜工人
我试图从docker映像的入口点脚本启动芹菜守护进程工作程序 start.shDocker 如何在停靠环境中从sh脚本启动守护进程芹菜工人,docker,celery,sh,Docker,Celery,Sh,我试图从docker映像的入口点脚本启动芹菜守护进程工作程序 start.sh #!/bin/bash service rabbitmq-server restart rabbitmqctl add_user xxx rabbitmqctl add_vhost sample_host rabbitmqctl set_user_tags xxx rabbitmqctl set_permissions -p sample_host krishna ".*" ".*
#!/bin/bash
service rabbitmq-server restart
rabbitmqctl add_user xxx
rabbitmqctl add_vhost sample_host
rabbitmqctl set_user_tags xxx
rabbitmqctl set_permissions -p sample_host krishna ".*" ".*" ".*"
rabbitmqctl set_user_tags xxx administrator
service rabbitmq-server restart
gunicorn djsr.wsgi:application --user www-data --bind 0.0.0.0:8020 --workers 1 --timeout 120
celery -A djsr worker -l info -Ofair &
dockerfile
RUN chmod +x /opt/app/scripts/start.sh
# start server
EXPOSE 8020
STOPSIGNAL SIGTERM
ENTRYPOINT ./scripts/start.sh
entryopint脚本中的所有命令都将执行,最后一个命令除外
如果我在虚拟机中登录并手动启动它,它就会工作
docker exec -it cdr sh celery -A djsr worker -l info -Ofair &
我已尝试在容器开始文件中添加上述脚本,但仍然无法工作
我正在运行docker构建和Jenkins管道中的映像运行脚本
它是否与命令末尾的“&”有关
我知道生产中的芹菜需要配置为一项服务,但对于我的应用程序来说,这目前还可以使用。如果这是真的,我会非常惊讶。可能发生的情况是脚本退出,Docker容器也退出。您可以通过从最后一行中删除
&
来防止这种情况的发生;但也许再加上wait$代码>作为最后一行。通常可以选择在守护程序模式下运行,而不需要后台运行守护程序,这正是为了支持这种类型的场景;这些通常应该放在三个单独的容器中,都作为自己容器的CMD
,都作为前台进程。明白了,我需要将其重构为Docker compose。。。