使用docker的Django和nginx不会加载compose - static文件



我知道有人问过几个类似的问题,但我还没有在任何地方找到合适的答案。

我想dockerize我的Django应用程序。应用程序在docker容器中工作正常,但静态文件(图像,css等)没有加载。

My docker-compose.yml:

version: '2' 
services:   
  web:
    build: .
    command: ./start.sh
    volumes:
      - .:/app
      - /app/www/static
    ports:
      - "8000:8000"
    env_file: .env
  nginx:
    build: ./nginx
    links:
      - web
    ports:
      - "0.0.0.0:80:80"
    volumes_from:
      - web

start.sh脚本

python manage.py makemigrations --noinput
python manage.py migrate --noinput
python manage.py collectstatic --noinput
exec gunicorn audiobridge.wsgi:application --bind 0.0.0.0:8000 --workers 3

web容器的Dockerfile:

FROM python:2.7
ENV PYTHONUNBUFFERED 1
RUN mkdir /app
WORKDIR /app
ADD requirements.txt /app/
RUN pip install -r requirements.txt
ADD . /app/

然后我在我的项目中有一个nginx/目录,其中有以下Dockerfile:

FROM nginx
COPY sites-enabled/audiobridge /etc/nginx/sites-enabled/

和在nginx/sites-enabled中有nginx配置文件:

server {
listen 80;
server_name 127.0.0.1;
charset utf-8;
location /static {
    alias /app/www/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;
}
}

输入图片描述

volumes:
  - "../nginx/conf.d:/etc/nginx/conf.d/templates"
  - "/static:/static"

你试过将这段代码添加到nginx和django应用程序吗?

最新更新