Docker Django 404 for web static files, but fine for admin static files

Dipak picture Dipak · Jul 28, 2016 · Viewed 13k times · Source

please help me on this docker django configuration for serving static files.

my Django project running on Docker got some issues with delivering static files.

All static files for admin view is loading fine, but static files for client web view is throwing 404 Not found Error.

This is my docker.yml configuration details:

web:
  build: ./web
  expose:
    - "8000"
  links:
    - postgres:postgres
  volumes:
    - ./web:/usr/src/app
  ports:
    - "8000:8000"
  env_file: .env
  command: python manage.py runserver 0.0.0.0:8000

postgres:
  image: postgres:latest
  volumes:
    - /var/lib/postgresql
  ports:
    - "5432:5432"

update

This is the admin static file url will look like : http://developer.com:8000/static/admin/css/base.css and this is how client static file url looks like: http://developer.com:8000/static/css/base.css Where those admin folder in static directory is creator by running django command collectstatic

I have used this setting previously, and was working fine. But when I moved the project root folder to another directory seems have this issue.

I am totally stuck here, many many thanks for all your help and feedback.

Answer

Dipak picture Dipak · Jul 28, 2016

This was issue with the STATICFILES_DIRS configuration in the settings.py file.

This setting defines the additional locations the staticfiles app will traverse if the FileSystemFinder finder is enabled, e.g. if you use the collectstatic or findstatic management command or use the static file serving view.

Following was the configuration in my settings.py:

STATIC_URL = '/static/'
STATIC_ROOT      =  os.path.join(BASE_DIR, "static") 

Now I updated this code to:

STATIC_URL = '/static/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, "static"),
]

And every files is loading fine.

Reference Link