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

我正在尝试使用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:
    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
?整个设置在容器外部(甚至容器内部,只要我手动添加静态文件)运行良好,它们只是在构建过程中被删除,尽管从未被明确地触及过。