【发布时间】:2021-07-21 07:01:53
【问题描述】:
下面是我的 Docker 文件,我正在创建它的映像并启动我的容器:
ENTRYPOINT ["/usr/bin/docker-entrypoint.sh"]
我的docker-entrypoint.sh如下:
set -eo pipefail
if [ "${#}" -ne 0 ]; then
exec "${@}"
else
gunicorn \
--bind "0.0.0.0:${SUPERSET_PORT}" \
--access-logfile '-' \
--error-logfile '-' \
--workers 10 \
--worker-class gthread \
-k gevent \
--threads 20 \
--timeout 6000 \
--limit-request-line 0 \
--limit-request-field_size 0 \
"${FLASK_APP}"
celery --app=superset.tasks.celery_app:app worker -Ofair -l INFO
fi
gunicorn 服务器运行良好,但 celery 工人没有出现,我在这里做错了什么吗?
回答后更新:
gunicorn \
--bind "0.0.0.0:${SUPERSET_PORT}" \
--access-logfile '-' \
--error-logfile '-' \
--workers 10 \
--worker-class gthread \
-k gevent \
--threads 20 \
--timeout 6000 \
--limit-request-line 0 \
--daemon \
--limit-request-field_size 0 \
"${FLASK_APP}" &\
celery --app=superset.tasks.celery_app:app worker -Ofair -l INFO
【问题讨论】:
-
以
&结束gunicorn命令以在后台运行它。就像现在一样,celery 命令在 gunicorn 命令完成之前不会运行。 -
为什么这些必须是同一个容器?如果您删除此入口点脚本,您可以
docker run your-image celery --app=...,运行具有相同图像但不同命令的第二个容器。 -
@HansKilian 我在您发表评论后更新了问题我做得正确无法运行芹菜
标签: python docker celery gunicorn