Django Static Assets Not Found (404) в контейнере Docker
Недавно я настроил свой проект Django с помощью Docker. Когда я запускаю свой контейнер, мое приложение Django работает, но отсутствуют (404) все статические активы:
GET http://localhost:8000/static/theme/css/sb-admin-2.min.css net::ERR_ABORTED 404 (Not Found)
Активы загружаются без проблем вне контейнера Docker. Мой проект Django настроен на использование WhiteNoise. Я знаю, что многие говорят, что не стоит беспокоиться и просто перенести статические активы на S3. Я прибегну к этому, если потребуется, но я бы очень хотел попробовать заставить это работать для моей локальной конфигурации среды.
Вот соответствующая конфигурация:
структура проекта:
- cs-webapp
- cs
- settings.py
- urls.py
- wsgi.py
- staticfiles/
...
- webapp
- migrations/
- models/
- views/
...
Dockerfile
docker-compose.yml
manage.py
...
settings.py
BASE_DIR = Path(__file__).resolve().parent.parent
print("!!!!!! BASE_DIR IS " + str(BASE_DIR)) # this prints '/app'
STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'staticfiles'
#STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
docker-compose.yml
version: '3'
services:
app:
build:
context: .
ports:
- "8000:8000"
volumes:
- /app
command: >
sh -c "sleep 10; python manage.py collectstatic --noinput &&
python manage.py migrate &&
python manage.py runserver 0.0.0.0:8000"
env_file:
- .env
- db.env
depends_on:
- db
rabbitmq:
...
celery-worker:
...
celery-beat:
...
db:
...
Dockerfile
FROM python:3.7-alpine
ENV PYTHONBUFFERED=1
COPY ./requirements.txt /requirements.txt
RUN apk add --update --no-cache git libffi-dev
RUN apk add --update --no-cache postgresql-client jpeg-dev
RUN apk add --update --no-cache --virtual .tmp-build-deps \
gcc libc-dev linux-headers postgresql-dev musl-dev zlib zlib-dev
RUN pip install -r /requirements.txt
RUN apk del .tmp-build-deps
RUN mkdir /app
COPY . /app
WORKDIR /app