Django 德扬戈在码头上;静态文件消失
我正在尝试使用docker nginx和gunicorn部署我的django项目。Django 德扬戈在码头上;静态文件消失,django,docker,nginx,gunicorn,django-staticfiles,Django,Docker,Nginx,Gunicorn,Django Staticfiles,我正在尝试使用docker nginx和gunicorn部署我的django项目。 我的问题是容器中缺少用于项目的静态文件 在项目中时: ls staticfiles/ css disconnected.html images lib nothing.css 使用docker exec-it foo_web_1/bin/sh进入容器后 ls staticfiles/ admin 我的docker撰写文件: version: '3.7' services: web: bu
我的问题是容器中缺少用于项目的静态文件 在项目中时:
ls staticfiles/
css disconnected.html images lib nothing.css
使用docker exec-it foo_web_1/bin/sh进入容器后
ls staticfiles/
admin
我的docker撰写文件:
version: '3.7'
services:
web:
build:
context: ./foo-app
dockerfile: Dockerfile.prod
command: gunicorn foo-app.wsgi:application --bind 0.0.0.0:8000
volumes:
- static_volume:/home/foo-app/web/staticfiles
- media_volume:/home/foo-app/web/mediafiles
expose:
- 8000
env_file:
- ./.env.prod
nginx:
build: ./nginx
volumes:
- static_volume:/home/foo-app/web/staticfiles
- media_volume:/home/foo-app/web/mediafiles
ports:
- 2375:80
depends_on:
- web
volumes:
postgres_data:
static_volume:
media_volume:
nginx.conf文件:
upstream foo-app {
server web:8000;
}
server {
listen 80;
location / {
proxy_pass http://foo-app;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
}
location /staticfiles/ {
alias /home/foo-app/web/staticfiles/;
}
location /mediafiles/ {
alias /home/foo-app/web/mediafiles/;
}
}
settings.py中与静态文件相关的部分:
STATIC\u URL=“/staticfiles/”
静态文件\u目录=[
join(基本目录,“静态文件”)
]
在dockerfile中,我定义了以下内容:
ENV HOME=/home/foo-app
ENV APP_HOME=/home/foo-app/web
RUN mkdir $APP_HOME
WORKDIR $APP_HOME
后来,我简单地用
COPY . $APP_HOME
所有其他文件都显示得非常好,我已经尝试删除并重建整个项目,以避免出现无效的工件 通过将
STATIC\u ROOT
从静态文件的位置分离出来,然后将python manage.py collectstatic--无输入--清除
添加到我的startupscript中,问题得到了解决 那些文件可能在你的.dockrignore
中吗?我发现Django和Docker的最佳实践是在Docker构建过程中运行collectstatic
,并为静态文件提供服务,例如,项目当前不包括.dockrignore
文件。您是否尝试运行:python manage.py collectstatic
?整个设置在容器外部(甚至容器内部,只要我手动添加静态文件)运行良好,它们只是在构建过程中被删除,尽管从未被明确地触及过。