Docker compose, NGINX не обслуживает статические файлы - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь обслуживать простое приложение Flask с помощью NGINX, используя Docker Compose.Но NGINX не будет обслуживать мои статические файлы.

Я использую Ubuntu 18.04 коробку.Вот моя файловая структура:

    .
    ├── docker-compose.yml
    ├── nginx
    │   └── sites-enabled
    │       └── nginx.conf
    ├── README.md
    ├── uwsgi.ini
    └── web
        ├── app
        │   ├── __init__.py
        │   ├── static
        │   │   ├── pics
        │   │   │   ├── headshot1.jpg
        │   │   │   └── headshot2.jpg
        │   │   ├── scripts.js
        │   │   └── styles.css
        │   └── templates
        │       ├── index.html
        │       └── layout.html
        └── run.py

Вот мой nginx.conf:

    http {
      server {
        listen 80;
        server_name example.com www.example.com;

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

        location / {
          include uwsgi_params;
          uwsgi_pass web:5000;
          proxy_set_header Host $host;
          proxy_set_header X-Real-IP $remote_addr;
          proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
      }
    }

И мой docker-compose.yml:

version: "2"

services:
  web:
    restart: always
    build: ./web
    expose:
      - "5000"
    volumes:
      - ./web:/usr/src/app
    command: >
      bash -c "uwsgi --socket :5000 \
                     --chdir /usr/src/app \
                     --wsgi-file run.py \
                     --callable app \
                     --master \
                     --processes 4 \
                     --threads 2"

  nginx:
    restart: always
    image: nginx:1.15
    ports:
      - "80:80"
    volumes:
      - /www/static
      - ./nginx/sites-enabled/nginx.conf:/etc/nginx/nginx.conf
    volumes_from:
      - web
    links:
      - web:web

Когда я запускаюконтейнеры, я могу получить доступ к своему сайту из Интернета, но ни один из статических файлов (CSS, изображений) не обслуживается.Когда я захожу в контейнер NGINX, я могу найти статические файлы:

$ docker exec -it my_container_1_39dbd8b7e8dc ls -l /usr/src/app/app/static/pics
drwxr-xr-x 2 root root 4096 Feb  8 18:39 pics
-rw-r--r-- 1 root root    0 Feb  8 18:39 scripts.js
-rw-r--r-- 1 root root 3793 Feb  8 18:39 styles.css

Я не уверен, что я делаю здесь неправильно.Может быть, это проблема с правами доступа к файлу?

РЕДАКТИРОВАТЬ: добавление ссылок в каталог static/:

HTML:

<link rel="stylesheet" href="/static/styles.css"/>

CSS:

#right {
  float: right;
  background:
    linear-gradient(to bottom, rgba(0,55,164, 0.75), rgba(0, 55, 164, 0.9)),
    url(pics/headshot1.jpg) no-repeat center center;
}
...