Пропали стили django admin panel
При локальном запуске проекта на докере с подключением Nginx сайт не видит css файлы для админ панели, остальные статичные и медиа файлы сайта работают, без nginx всё работает отлично
nginx.conf:
upstream web {
server web:80;
}
server {
listen 80;
location / {
include proxy_params;
proxy_pass http://web;
}
location /static/ {
alias /app/static/;
}
location /media/ {
alias /app/media/;
}
}
Dockerfile:
FROM python:3.9
SHELL ["/bin/bash", "-c"]
# Создаем пользователя и группу "app"
RUN groupadd -r app && useradd --no-log-init -r -g app app
# Устанавливаем базовые переменные среды
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# Создаем и настраиваем рабочую директорию
WORKDIR /app
RUN mkdir /app/static && mkdir /app/media && chown -R app:app /app && chmod 755 /app
# Копируем файл зависимостей и устанавливаем их
COPY ./requirements.txt /app/
RUN pip install -r /app/requirements.txt
# Устанавливаем дополнительные зависимости
RUN apt-get update && apt-get -qy install gcc libjpeg-dev \
libpq-dev libmariadb-dev-compat gettext cron openssh-client flake8 vim && apt-get clean
# Копируем остальные файлы проекта
COPY wait-for-it.sh /app/wait-for-it.sh
COPY . /app/
# Собираем статические файлы Django
RUN python manage.py collectstatic --noinput
# Устанавливаем права доступа для пользователя app
RUN chown -R app:app /app
RUN chown -R app:app /app/static
RUN chown -R app:app /app/media
# Пользователь app переключается на работу внутри контейнера
USER app
Dockerfile nginx:
FROM nginx:latest
RUN rm /etc/nginx/conf.d/default.conf
COPY nginx.conf /etc/nginx/conf.d
COPY proxy_params /etc/nginx
COPY --from=procleaning-web /app/static_root /app/static_root
docker-compose.yaml:
version: "3"
services:
db:
image: postgres:12
container_name: db
volumes:
- ~/.pg/pg_data/app:/var/lib/postgresql/data
ports:
- "5434:5432"
environment:
POSTGRES_DB: ${DB_NAME}
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
env_file:
- .env
web:
build:
context: .
dockerfile: Dockerfile
container_name: djangowebsite
environment:
DJANGO_SUPERUSER_USERNAME: ${DJANGO_SUPERUSER_USERNAME}
DJANGO_SUPERUSER_EMAIL: ${DJANGO_SUPERUSER_EMAIL}
DJANGO_SUPERUSER_PASSWORD: ${DJANGO_SUPERUSER_PASSWORD}
ports:
- "8080:80"
env_file:
- .env
depends_on:
- db
volumes:
- static_volume:/app/static
- media_volume:/app/media
command: >
/bin/sh -c "
/app/wait-for-it.sh db:5432 -- python manage.py makemigrations &&
python manage.py migrate &&
python manage.py runserver 0.0.0.0:80"
nginx:
build:
dockerfile: ./Dockerfile
context: ./docker/nginx/
container_name: app_nginx
image: app_nginx
volumes:
- static_volume:/app/static
- media_volume:/app/media
depends_on:
- web
env_file:
- .env
ports:
- "${NGINX_EXTERNAL_PORT}:80"
volumes:
static_volume:
media_volume: