Как обслуживать статические файлы из Django с помощью docker-compose и Nginx?
Я пытаюсь обслуживать статические файлы из Django с помощью docker-compose и Nginx. У меня есть файл compose, в котором я устанавливаю три сервиса, а также тома для базы данных, статических файлов и загруженных файлов:
version: '3'
services:
lims:
container_name: lims
build: ./lims
env_file:
- ./lims/.env.django.prod
ports:
- '8000:8000'
depends_on:
- db
volumes:
- static_volume:/lims/staticfiles
- upload_volume:/lims/upload
db:
image: postgres:13.0-alpine
volumes:
- postgres_data:/var/lib/postgresql/data/
env_file:
- ./lims/.env.db.prod
nginx:
container_name: nginx
restart: always
build: ./nginx
ports:
- "80:80"
volumes:
- static_volume:/lims/staticfiles
- upload_volume:/lims/upload
depends_on:
- lims
volumes:
postgres_data:
static_volume:
upload_volume:
Теперь, если я запускаю это с помощью Django's DEBUG=1 все работает нормально. Однако как только я выключаю режим отладки, все статические файлы исчезают.
В настройках Django я указал расположение статических и загруженных файлов следующим образом:
MEDIA_URL = '/lims/upload/'
MEDIA_ROOT = BASE_DIR / 'upload'
STATIC_URL = "/lims/staticfiles/"
STATIC_ROOT = BASE_DIR / "staticfiles"
Я также попытался добавить путь /lims/staticfiles/ к Nginx следующим образом:
location /lims/staticfiles/ {
alias /var/lib/docker/volumes/;
}
поскольку я полагаю, что тома должны быть расположены там. Однако это привело к тому, что статические файлы даже не отображаются в режиме отладки.
Как правильно обслуживать статические файлы и загруженный пользователем контент здесь?