当主机系统上只有Nginx时,使用Docker的静态文件

时间:2019-02-14 13:54:53

标签: django docker nginx

我的主机(Ubuntu服务器)上装有Nginx。使用Docker时应如何设置静态文件?

version: '2'

services:
  postgres:
    image: postgres:9.6
  redis:
    image: "redis:alpine"
  web: &django
    restart: always
    environment:
      - DJANGO_SECRET_KEY=local
    image: web
    build:
      context: .
      dockerfile: ./compose/production/web/Dockerfile
    command: /gunicorn.sh
    depends_on:
      - postgres
      - redis
    links:
      - redis
    ports:
      - "8083:5000"

在另一个项目(没有Docker)中,我在sites-enabled/mysite中有此设置:

location /static/ {
    root /home/myproject;
}

2 个答案:

答案 0 :(得分:1)

我在这里做什么?

  • 泊坞窗中的Web应用程序(像您一样)
  • 容器中的NGINX
  • 使用docker-compose
  • 在NGINX的docker-compose.yml中,
  • 在卷中,我为静态文件设置了文件夹:

    音量:

    - /folder/myproject/static:/home/myproject/static
    

可能有很多其他方法可以做到这一点,但是我需要交付工作,所以那是我唯一可以做到的工作。

致谢

答案 1 :(得分:1)

在这里,您可以使用volume从容器到主机系统共享静态文件夹,如下所示:

version: '2'

services:
  postgres:
    image: postgres:9.6
  redis:
    image: "redis:alpine"
  web: &django
    restart: always
    environment:
      - DJANGO_SECRET_KEY=local
    image: web
    build:
      context: .
      dockerfile: ./compose/production/web/Dockerfile
    volumes:
      - /path/to/static/folder:/static
    command: /gunicorn.sh
    depends_on:
      - postgres
      - redis
    links:
      - redis
    ports:
      - "8083:5000"

现在,使用nginx从该路径提供这些内容:

location /static/ {    
    autoindex on;    
    alias /path/to/static/folder/; 
}

在这里,我假设您使用/static作为docker中django项目的静态根。