docker - 如何在 dockerized 环境中从 sh 脚本启动守护进程 celery worker
问题描述
我正在尝试从 docker 映像的入口点脚本启动 celery 守护进程。
启动.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 ".*" ".*" ".*"
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 &
我尝试在容器启动文件中添加上述脚本,但仍然无法正常工作。
我正在从 Jenkins 管道运行 docker build 和图像运行脚本。
它与命令末尾的“&”有关吗?
我知道在生产中需要将 celery 配置为服务,但对于我的应用程序来说,这目前有效。
解决方案
推荐阅读
- php - 恢复会话密钥,然后将其删除。(php5.6)(解决方法)
- apache-flink - Apache Flink DataStream - 翻滚窗口中的元素计数
- javascript - 谷歌云平台中的多图表选择
- django - 如何在 Django 中加载与选定的多个选项相关的值
- racket - 初学者问题:不能在定义之前引用标识符
- java - 自动更新来自 Android 中 API 服务的片段数据
- android - 手动验证 Firebase otp
- entity-relationship - ER图中的实体和关系
- node.js - 如何在 firebase node.js 云功能中推送通知?
- unity3d - Unity 2019.2.9f1 在 MacOS Mojave 上崩溃