![](/img/trans.png)
[英]serving Django static files with Docker, nginx and gunicorn
[英]How to load the static files of django+nginx+gunicorn application using docker?
我无法显示我的静态文件。 我尝试了各种设置和目录配置等,但是它们只是显示为404。
应用程序的目录结构
.
├── config
│ └── nginx
│ └── conf.d
│ └── local.conf
├── docker-compose.yml
├── Dockerfile
├── aggre
│ ├── aggre
│ └── manage.py
| └── static
├── requirements.txt
我在settings.py中包含了static_url和root,它看起来像
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR),'static']
STATIC_ROOT = os.path.join(os.path.dirname(os.path.dirname(BASE_DIR)), 'static')
Docker文件
FROM python:3.6
ENV PYTHONUNBUFFERED 1
RUN mkdir -p /opt/services/django/src
WORKDIR /opt/services/django/src
COPY requirements.txt /tmp/
RUN pip install --requirement /tmp/requirements.txt
COPY . /tmp/
COPY . /opt/services/django/src
RUN python aggre/manage.py collectstatic --no-input # <-- here
CMD exec /bin/bash -c "trap : TERM INT; sleep infinity & wait"
EXPOSE 8000
ADD . /opt/services/django/src
CMD ["gunicorn", "--chdir", "aggre", "--bind", ":8000", "aggre.wsgi:application"]
docker-compose.yml
version: '2'
services:
djangoapp:
build: .
volumes:
- .:/opt/services/django/src
- static_volume:/opt/services/django/static/
networks:
- nginx_network
nginx:
image: nginx:1.13
ports:
- "80:80"
volumes:
- ./config/nginx/conf.d:/etc/nginx/conf.d
- static_volume:/opt/services/django/static/
depends_on:
- djangoapp
networks:
- nginx_network
networks:
nginx_network:
driver: bridge
volumes:
static_volume:
local.conf
server {
listen 80;
server_name ***.***.io;
location / {
proxy_pass http://djangoapp:8000;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_redirect off;
}
location /static {
alias /opt/services/django/static;
}
}
我正在使用**进行构建和运行
docker-compose up --built
应用程序已成功启动,但静态文件未加载。 我正进入(状态
“ /opt/services/django/src/static/js/bootstrap.js”失败(2:无此类文件或目录)
**
在urls.py中添加
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
然后附加到urlpatterns:
urlpatterns = [
YOUR_CONFIG
] + staticfiles_urlpatterns()
在Nginx配置更新
location /static {
root /opt/services/django;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.