我正在使用docker-compose和docker-machine来设置具有多个容器的开发环境 . 我有一个nginx容器,它充当我的django应用程序的代理,也提供静态文件) . 我还有一个用于django应用程序的容器,一个用于postgresql,一个用于postgresdata . 目录结构如下:

code/
  -- nginx/
       Dockerfile
       nginx.conf
  -- web/
       django-project/
       static/
       Dockerfile
       manage.py
       requirements.txt
  .env
  docker-compose.yml
  production.yml

为了运行应用程序,我使用docker-machine:

docker-machine create -d virtualbox dev

然后我跑:

docker-compose build
docker-compose up -d

应用程序启动并在机器的ip上运行 . 问题是nginx无法提供静态文件,因为它没有权限(13:权限被拒绝) .

我的设置如下:

nginx Dockerfile:

# Set nginx base image
FROM nginx

# Copy custom configuration file from the current directory
COPY nginx.conf /etc/nginx/nginx.conf

ngin.conf:

worker_processes 1;

events {
worker_connections 1024;
}

http {

server {
    listen 80;
    server_name example.org;

    access_log /dev/stdout;
    error_log /dev/stdout info;

    location /static/ {
        alias /usr/src/app/static/;
    }

    location / {
        proxy_pass http://web:8000;
        proxy_set_header   Host $host;
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header   X-Forwarded-Host $server_name;
    }
}
}

django Dockerfile:

FROM python:3.5.1-onbuild

泊坞窗,compose.yml:

web:
  restart: always
  build: ./web
  expose:
    - "8000"
  links:
    - postgres:postgres
  volumes:
    - /usr/src/app/static
  env_file: .env
  command: /usr/local/bin/gunicorn collecteev_django.wsgi:application -w 2 -b :8000

nginx:
  restart: always
  build: ./nginx/
  ports:
    - "80:80"
  volumes_from:
    - web
  links:
    - web:web

postgres:
  restart: always
  image: postgres:latest
  volumes_from:
    - data
  ports:
    - "5432:5432"

data:
  restart: always
  image: postgres:latest
  volumes:
    - /var/lib/postgresql
  command: "true"

版本:

docker: 1.9.1
docker-compose: 1.5.2
docker-machine: 0.5.4

任何有关此问题的帮助将非常感谢,谢谢!