Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

404 error when accessing Django STATIC resources inside Docker image

This is the Dockerfile for my Django project:

FROM python:3.10.5-alpine

ENV PYTHONDONTWRITEBYTECODEBYDEFAULT=1
ENV PYTHONUNBUFFERED=1

RUN adduser --disabled-password appuser

USER appuser

WORKDIR /home/appuser/app

COPY requirements.txt .

USER root

RUN python -m pip install --no-cache-dir --disable-pip-version-check --requirement requirements.txt

USER appuser

COPY . .

ENTRYPOINT [ "./entrypoint.sh" ]

And Django settings regarding static assets:

STATIC_URL = 'static/'
STATIC_ROOT = BASE_DIR / 'static/'

And entrypoint.sh

#!/bin/sh

python manage.py makemigrations
python manage.py migrate
python manage.py collectstatic --no-input
gunicorn project.wsgi:application --bind=0.0.0.0:8000 --workers=4 --timeout=300 --log-level=debug --log-file=-

exec "$@"

When I start the container I shell into it and see that static folder is created and populated with admin staff.

However browsing http://127.0.0.1:8000/admin brings up the admin login page without any CSS and I get lots of 404 errors in the developer console.

I also changed STATIC_ROOT to /home/appuser/app/static/ and got the same.

Please assist.

like image 955
Omid Shojaee Avatar asked Dec 06 '25 07:12

Omid Shojaee


1 Answers

Did you check for the permissions of the created static folder?

I had to manually change the permissions of the folders.

you could try with following Dockerfile for nginx:

FROM nginx:latest

RUN apt-get update && apt-get install -y procps
RUN mkdir -p /home/app/staticfiles
RUN chmod -R 755 /home/app/staticfiles
like image 99
Toms Avatar answered Dec 08 '25 22:12

Toms