Docker 不從 Django 讀取靜態文件

Docker 不從 Django 讀取靜態文件

我面臨著一個已經消耗了我大量時間的問題。我正在嘗試使用 docker 和 django 部署應用程序,但是一旦它說找不到靜態文件,我就無法讀取靜態文件。我進入容器,文件就在它們應該在的地方。

我將在下面添加一些程式碼:

Dockerfile

FROM python:3.6

ENV PYTHONUNBUFFERED 1

RUN mkdir /www

COPY Pipfile Pipfile.lock /www/
WORKDIR /www

RUN pip install pipenv && pipenv install --system

COPY . /www/
RUN pip install -r requirements.txt
RUN cd myapp-root && python manage.py collectstatic --no-input

EXPOSE 8000
CMD ["gunicorn", "-c", "config/gunicorn/conf.py", "--bind", ":8000", "--chdir", "myapp-root", "myapp.wsgi:application"]

設定.py

STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, "static")
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, "media")

docker-compose.yml

version: '3'

services:

  # database containers, one for each db
  postgres:
    restart: always
    image: postgres:latest
    ports:
      - "5432:5432"
    volumes:
      - db_volume:/var/lib/postgresql/data/

  # web container, with django + gunicorn
  djangoapp:
    build: .
    environment:
      - DJANGO_SETTINGS_MODULE
    volumes:
      - .:/www
    links:
      - postgres:postgres
      - redis:redis
    env_file: .env

  # reverse proxy container (nginx)
  nginx:
    image: nginx:1.13
    ports:
      - 80:80
    volumes:
      - ./config/nginx/conf.d:/etc/nginx/conf.d
      - ./myapp-root/static:/static
      - ./myapp-root/media:/media 
    depends_on:
      - djangoapp

  redis:
    restart: always
    image: redis:latest
    ports:
      - "6379:6379"
    volumes:
      - redisdata:/data

volumes:
  db_volume:
  redisdata:

本地.conf(nginx)

server {

    listen 80;
    server_name localhost;

    location /static/ {
        alias /www/myapp-root/static/;
    }

    location /media/ {
        alias /www/myapp-root/media/;
    }

    location / {
        proxy_pass http://djangoapp;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
        if (!-f $request_filename) {
            proxy_pass http://djangoapp;
            break;
        }
    }
}

我已經多次更改文件的去本地化,但仍然沒有在 docker 容器中找到它。

nginx_1      | 2019/06/29 00:11:28 [error] 6#6: *3 open() "/www/myapp-root/static/css/style.css" failed (2: No such file or directory),

謝謝你,

相關內容