在Docker上自动重新加载Django服务器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Docker上自动重新加载Django服务器相关的知识,希望对你有一定的参考价值。
我正在学习使用Docker,我从昨天开始遇到问题(在我求助之前,我开始调查但是我无法解决问题),我的问题是我在本地机器上有一个Django项目,我与Docker也有相同的项目,但是当我更改本地项目时,它不会反映在项目正在运行的容器中。如果你能帮助我,我将非常感激。谢谢。
Dockerfile
FROM python:3.7-alpine
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
RUN apk update
&& apk add --virtual build-deps gcc python3-dev musl-dev
&& apk add postgresql-dev
&& pip install psycopg2
&& apk del build-deps
RUN pip install --upgrade pip
RUN pip install pipenv
COPY ./Pipfile /code
RUN pipenv install --skip-lock --system --dev
COPY ./entrypoint.sh /code
COPY . /code
ENTRYPOINT [ "/code/entrypoint.sh" ]
泊坞窗,compose.yml
# version de docker-compose con la que trabajaremos
version: '3'
# definiendo los servicios que correran en nuestro contenedor
services:
web:
restart: always
build: .
command: gunicorn app.wsgi:application --bind 0.0.0.0:8000 #python manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
- static_volume:/code/staticfiles
- media_volume:/code/mediafiles
expose:
- 8000
environment:
- SQL_ENGINE=django.db.backends.postgresql
- SQL_DATABASE=postgres
- SQL_USER=postgres
- SQL_PASSWORD=postgres
- SQL_HOST=db
- SQL_PORT=5432
- DATABASE=postgres
depends_on:
- db
env_file: .env
db:
restart: always
image: postgres:10.5-alpine
volumes:
- ./postgres-data:/var/lib/postgresql/data
nginx:
restart: always
build: ./nginx
volumes:
- static_volume:/code/staticfiles
- media_volume:/code/mediafiles
ports:
- 1337:80
depends_on:
- web
volumes:
static_volume:
media_volume:
这里有点疑问,将环境变量存储在Dockerfile或docker-compose中是一个好习惯吗?我使用.env但我在许多地方已经看到它们将变量存储在docker-compose中,如代码所示以上
我希望你能帮助我,关于我的项目的任何建议都很受欢迎,因为我评论说,我是Docker的新手,但我非常喜欢它,我想了解更多。
人们通常如何处理这个问题的方法是为开发和生产环境提供单独的docker-compose
配置,例如: local.yml
和production.yml
。这样你可以在开发时使用runserver
(你可能会发现它更适合,因为你将获得大量的调试信息)和生产中的gunicorn
。
我建议调查https://github.com/pydanny/cookiecutter-django项目,该项目集成了许多Django良好实践以及开箱即用的Docker配置。您可以使用cookiecutter
创建测试项目,然后检查它们如何进行Docker设置,包括环境变量。
以上是关于在Docker上自动重新加载Django服务器的主要内容,如果未能解决你的问题,请参考以下文章
如何使用spring dev工具在docker中自动重新加载spring boot应用程序
git webhook自动部署服务端代码django python docker等