Я пытаюсь развернуть мой django проект, используя docker nginx и gunicorn.
Моя проблема заключается в том, что статические файлы, которые я использую для своего проекта, отсутствуют в контейнере.
, когда в проекте:
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:
the nginx .conf file:
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_URL = "/staticfiles/"
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "staticfiles")
]
Внутри моего dockerfile я определяю следующее:
ENV HOME=/home/foo-app
ENV APP_HOME=/home/foo-app/web
RUN mkdir $APP_HOME
WORKDIR $APP_HOME
и позже я просто копирую весь проект, используя
COPY . $APP_HOME
Все остальные файлы отображаются совершенно нормально, и я попытался удалить и перестроить весь проект, чтобы избежать артефактов безрезультатно.