繁体   English   中英

如何使用Docker加载Django + nginx + 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM