我正在使用 Django 3.0.6,并希望对我的项目进行 dockerization。 除了静态文件外,一切都运行良好。当我正常运行项目时,静态文件会完全加载。但是,在码头化之后,它们不会加载并引发 404 错误。 我的项目布局如下:
├── 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;
}
}
我不知道问题是什么,请帮我解决这个问题。
我正常安装了nginx,并使用docker安装了其他的,它现在可以工作了。