问题描述
Supervisord在容器启动后未运行,我找不到我的设置有什么问题。 我已通过向容器输入bash进行检查,主管状态未运行。而且在docker日志中,我看不到受监管的运行日志。但是,如果输入container bash,然后手动启动,则一切正常。
最大的问题是我看不到任何错误。
我的dockerfile:
1/(1 + math.exp(rarity - level))
supervisord.conf文件:
###########
# BUILDER #
###########
# pull official base image
FROM python:3.8.5-buster as builder
# set work directory
workdir /usr/src/dodo
# set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# install psycopg2 dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
libpq-dev python3-dev \
libxml2-dev libxslt1-dev \
libldap2-dev libsasl2-dev libffi-dev \
supervisor
# install dependencies
copY ./requirements.txt .
RUN pip wheel --no-cache-dir --no-deps --wheel-dir /usr/src/dodo/wheels -r requirements.txt
#########
# FINAL #
#########
# pull official base image
FROM python:3.8.5-buster
# create directory for the app user
RUN mkdir -p /home/dodo/webapp
RUN mkdir -p /var/log/supervisor
# create the app user
RUN groupadd -r app && useradd -r -g app app
# create the appropriate directories
ENV HOME=/home/dodo/webapp
ENV APP_HOME=/home/dodo/webapp/web
ENV ALFACENTER=/media/alfacenter
RUN mkdir $APP_HOME
RUN mkdir $APP_HOME/staticfiles
workdir $APP_HOME
# install dependencies
RUN printf '#!/bin/sh\nexit 0' > /usr/sbin/policy-rc.d
RUN apt-get update && apt-get install -y libpq-dev supervisor
copY --from=builder /usr/src/dodo/wheels /wheels
copY --from=builder /usr/src/dodo/requirements.txt .
RUN pip install --no-cache /wheels/*
copY ./supervisord.conf /etc/supervisor/conf.d/supervisord.conf
# copy project
copY . $APP_HOME
# chown all the files to the app user
RUN chown -R app:app $APP_HOME
# change to the app users
# USER app
CMD ["/usr/bin/supervisord"]
Docker-compose文件:
[supervisord]
nodaemon=true
[program:djangoWatcher]
command=/usr/local/bin/python3.8 /home/dodo/webapp/web/djangoWatcherRun.py
directory=/home/dodo/webapp/web
autostart=true
autorestart=true
startretries=3
stderr_logfile=/var/log/supervisord.err.log
stdout_logfile=/var/log/supervisord.out.log
user=app
解决方法
假设您要使用Compose启动容器,那么问题可能是command: gunicorn --workers=2 --threads=4 main.wsgi:application --bind 0.0.0.0:8000
,您设置了另一个替代的启动命令。
我注意到不相关的问题:
-
您正在使用apt安装
python3-dev
软件包。您不应该这样做:官方python
映像已经预先安装了Python和Python开发标头,因此您最终将获得两个版本的Python,这些版本可能会造成问题。 -
RUN chown
使您的图像更大,因为它基本上会再次复制所有这些文件。改为使用COPY --chown=app:app . $APP_HOME
。
我会说使用ENTRYPOINT docker命令而不是使用CMD在docker文件中运行您的超级用户将解决此问题。