我有一个Django应用程序,我的设置被放在名为settings的文件夹中。在这个文件夹中,我有init. py,www.example.com,www.example.com和production.py。 base.py , deployment.py and production.py.
我的www.example.com是这样的:wsgi.py looks like this:
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp_settings.settings.production")
application = get_wsgi_application()
我的停靠文件:
FROM python:3.8
ENV PYTHONUNBUFFERED 1
ENV PYTHONDONTWRITEBYTECODE 1
RUN mkdir /code
COPY . /code/
WORKDIR /code
RUN pip install --no-cache-dir git+https://github.com/ByteInternet/pip-install-privates.git@master#egg=pip-install-privates
RUN pip install --upgrade pip
RUN pip_install_privates --token {GITHUB-TOKEN} /code/requirements.txt
RUN playwright install --with-deps chromium
RUN playwright install-deps
RUN touch /code/logs/celery.log
RUN chmod +x /code/logs/celery.log
EXPOSE 80
我的Dock合成文件:
version: '3'
services:
app:
container_name: myapp_django_app
build:
context: ./backend
dockerfile: Dockerfile
restart: always
command: gunicorn myapp_settings.wsgi:application --bind 0.0.0.0:80
networks:
- myapp_default
ports:
- "80:80"
env_file:
- ./.env
- 问题**
每次我创建映像时,Docker都从www.example.com而不是production.py获取设置。我尝试使用以下命令更改我的设置:development.py instead of production.py. I tried to change my setting using this command:
set DJANGO_SETTINGS_MODULE=myapp_settings.settings.production
它在使用conda/venv时工作正常,我能够切换到生产模式,但在创建Docker映像时,它根本不考虑www.example.com文件。production.py file at all.
- 问题**
还有什么我应该注意的,导致这样的问题,我该如何解决它?
1条答案
按热度按时间w6lpcovy1#
是的,您还需要检查其他内容:
当你运行你的docker容器时,你可以指定环境变量。如果你声明了环境变量
DJANGO_SETTINGS_MODULE=myapp_settings.development
,它将覆盖你在www.example.com中指定的内容wsgi.py!以上代码的基本含义是:将
"myapp_settings.settings.production"
声明为默认值但如果声明了环境变量DJANGO_SETTINGS_MODULE
,则采用该变量的值。编辑1
也许您可以尝试在您的docker-compose文件中指定环境变量: