Python Django静态文件未加载到Docker上?
我正在使用Django3.0.6,希望将我的项目dockerize。除了静态文件外,其他一切都正常工作。当我正常运行我的项目时,静态文件被完全加载。但是,在dockerization之后,它们不会被加载并抛出404错误。 我的项目布局如下:Python Django静态文件未加载到Docker上?,python,django,docker,docker-compose,static-files,Python,Django,Docker,Docker Compose,Static Files,我正在使用Django3.0.6,希望将我的项目dockerize。除了静态文件外,其他一切都正常工作。当我正常运行我的项目时,静态文件被完全加载。但是,在dockerization之后,它们不会被加载并抛出404错误。 我的项目布局如下: ├── nginx │ ├── Dockerfile │ └── nginx.conf ├── src ├── applications ├── configuration
├── nginx
│ ├── Dockerfile
│ └── nginx.conf
├── src
├── applications
├── configuration
│ ├── asgi.py
│ ├── __init__.py
│ ├── __pycache__
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── Dockerfile
├── manage.py
├── requirements.txt
├── static
│ ├── build
│ ├── images
│ └── vendors
└── templates
settings.py:
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
Dockerfile:
FROM python:3.6
ENV PYTHONUNBUFFERED 1
ENV SRC_DIR=/var/www/project/src
RUN mkdir -p $SRC_DIR
WORKDIR $SRC_DIR
ADD ./requirements.txt $SRC_DIR/requirements.txt
RUN pip install --upgrade pip
RUN pip install -r requirements.txt
ADD . $SRC_DIR
docker-compose.yml:
version: '3'
services:
web:
build:
context: ./src
dockerfile: Dockerfile
command: bash -c "python manage.py makemigrations && python manage.py migrate && gunicorn --bind 0.0.0.0:8000 -w 4 configuration.wsgi"
env_file: ./src/.environment
volumes:
- ./src:/var/www/project/src
- ./src/static:/var/www/project/src/static
ports:
- 8000:8000
depends_on:
- db
nginx:
build:
context: ./nginx
dockerfile: Dockerfile
ports:
- 80:80
volumes:
- ./src:/var/www/project/src
- ./src/static:/var/www/project/src/static
depends_on:
- web
nginx.conf:
upstream view {
server web:8000;
}
server {
listen 80;
location / {
proxy_pass http://view;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
}
location /static/ {
autoindex on;
alias /var/www/project/src/static;
}
}
我不知道是什么问题。请帮助我解决此问题。尝试在静态位置上使用root而不是别名,在docker compose上,您不需要指定。/src/static,因为它包含在第一卷中。/src。希望对您有所帮助您的意思是:root/var/www/project/src/static?拉赫曼:你发现了吗?我也有同样的问题,如果使用Debug=False运行,您可以尝试在Dockerfile中运行collectstatic:
运行python manage.py collectstatic--noinput--clear