我刚开始使用 Docker 和 Nginx。我正在开展一个在本地工作的项目,其中包括平面页面和几个简单的应用程序,并将其与 this guide to utilise Docker, NGINX and Gunicorn 结合起来。 .
由于某种原因,它找不到我的静态文件,甚至找不到标准的 Django 管理静态文件。
控制台错误
GET http://0.0.0.0:8000/static/flatpages/CSS/flatpages.css
net::ERR_ABORTED 404 (Not Found)
Django 管理员 Django Admin
local.conf
upstream hello_server {
server djangoapp:8000;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://hello_server;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
}
location /static/ {
autoindex on;
alias /opt/services/djangoapp/static/;
}
location /media/ {
alias /opt/services/djangoapp/media/;
}
}
settings.py
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(os.path.dirname(os.path.dirname(BASE_DIR)),
"static"),
'/static/flatpages/',
]
到目前为止,我已经尝试过许多其他事情:
- 使用 STATIC_ROOT 和 STATICFILES_DIRS
- 我对 Django 文档的理解是静态文件位于
我需要使用 STATICFILES_DIRS 的多个位置 - 如果我使用 STATIC_ROOT 并收集静态,Django 管理员确实会发现 静态文件,但找不到任何其他文件。
- 我对 Django 文档的理解是静态文件位于
- 导航应用程序 Docker 容器以手动查找文件。我 无法找到它们或任何有效的模板。我找到这个 很奇怪。
如果我需要澄清或包含其他内容,请告诉我。预先感谢您的帮助,非常感谢。
最佳答案
据我了解,您需要同步 NGINX 和 Django 文件夹之间的静态卷。为此,您需要像这样更新您的 docker compose:
version: '3'
services:
djangoapp:
build: .
volumes:
- .:/opt/services/djangoapp/src
networks:
- nginx_network
nginx:
image: nginx:1.13
ports:
- 8000:80
volumes:
- ./config/nginx/conf.d:/etc/nginx/conf.d
- ./static:/opt/services/djangoapp/static/ # Syncing your current static directory to the Docker
depends_on:
- djangoapp
networks:
- nginx_network
networks:
nginx_network:
driver: bridge
关于python - NGINX 在 Dockered Django 项目中找不到静态文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55054261/