izk*_*ros 2 django docker-compose
我有基于 cookiecutter-django 的 django Web 应用程序。该堆栈构建在多个运行的容器上:django、redis、celerybeat、celeryworker、celeryflower、postgres、caddy。当我在 VPS 上的类似生产环境中启动应用程序时,我遇到了奇怪的行为 - 尽管从 git 存储库中签出了新代码,django 似乎仍在运行旧版本的代码(例如使用表单版本)。我尝试了一些操作来“强制”刷新应用程序代码:
docker-compose down然后,用 重建所有容器docker-compose build,然后docker-compose up
与上面类似的重建,但仅适用于带有 django 的容器。
当我检查 django 容器内的代码时 - 有正确版本的代码。我用 - 做了检查应用程序Django Debug Toolbar,似乎页面没有从缓存加载(没有从后端调用缓存,并且对数据库的查询数量可能表明页面没有从缓存加载)。我期望 django 会自动检测代码的更改并重新启动运行新代码,另外可能需要重新启动解释器(这应该通过放下容器并重新构建来解决)。还有什么想法可以检查或尝试吗?删除所有容器、图像和卷会有所帮助,但这不是我介绍每个更新的首选方式。我经历了Why does docker-compose build not反映我的django代码更改?在docker-compose 构建之后,docker-compose up 运行旧的未更新的容器
,但除了“nuke everything”之外,没有一个对我有用。有没有“软重载”的方法?这是 django 容器的 Dockerfile:
# Dockerfile for django container
FROM python:3.6-alpine
ENV PYTHONUNBUFFERED 1
RUN apk update \
# psycopg2 dependencies
&& apk add --virtual build-deps gcc python3-dev musl-dev \
&& apk add postgresql-dev \
# Pillow dependencies
&& apk add jpeg-dev zlib-dev freetype-dev lcms2-dev openjpeg-dev tiff-dev tk-dev tcl-dev \
# CFFI dependencies
&& apk add libffi-dev py-cffi
RUN addgroup -S django \
&& adduser -S -G django django
# Requirements are installed here to ensure they will be cached.
COPY ./requirements /requirements
RUN pip install --no-cache-dir -r /requirements/production.txt \
&& rm -rf /requirements
COPY ./compose/production/django/entrypoint /entrypoint
RUN sed -i 's/\r//' /entrypoint
RUN chmod +x /entrypoint
RUN chown django /entrypoint
COPY ./compose/production/django/start /start
RUN sed -i 's/\r//' /start
RUN chmod +x /start
RUN chown django /start
COPY ./compose/production/django/celery/worker/start /start-celeryworker
RUN sed -i 's/\r//' /start-celeryworker
RUN chmod +x /start-celeryworker
RUN chown django /start-celeryworker
COPY ./compose/production/django/celery/beat/start /start-celerybeat
RUN sed -i 's/\r//' /start-celerybeat
RUN chmod +x /start-celerybeat
RUN chown django /start-celerybeat
COPY ./compose/production/django/celery/flower/start /start-flower
RUN sed -i 's/\r//' /start-flower
RUN chmod +x /start-flower
COPY . /app
RUN chown -R django /app
USER django
WORKDIR /app
ENTRYPOINT ["/entrypoint"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2524 次 |
| 最近记录: |