Nginx некорректно обслуживает статические файлы в docker?

#django #docker #nginx #deployment

#django #docker #nginx #развертывание

Вопрос:

Я хочу, чтобы nginx действовал как обратный прокси-сервер и обслуживал статические файлы для django (api).

docker-compose.yml:

 version: '3'

services:
  api:
    build: api
    container_name: api
    volumes:
      - static_volume:/home/admin/api/static
    ports:
      - "8000:8000"
    env_file:
      - ./config/api/.env
    depends_on:
      - db
  
  db:
    image: postgres:latest
    container_name: db 
    volumes:
      - postgres_data:/var/lib/postgresql/data/
    env_file:
      - ./config/api/.env-db
  
  nginx:
    image: nginx:latest
    container_name: ngx
    volumes:
      - static_volume:/home/admin/api/static
      - ./config/nginx:/etc/nginx/conf.d
    ports:
      - "80:80"
    depends_on:
      - api

volumes:
  postgres_data:
  static_volume:
  

config/nginx/default.conf:

 upstream refridge {
    server api:8000;
}

server {
    listen 80;

    location / {
        proxy_pass http://refridge;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }

    location /static/ {
        autoindex on;
        alias /home/admin/api/static/;
    }
}
  

После их запуска с помощью docker-compose up -d --build и выполнения команды django migrate и collectstatic я вижу следующие журналы при попытке получить доступ к странице администратора django:

docker logs api

 Waiting for postgres...
PostgreSQL started
[2020-08-17 20:26:04  0000] [1] [INFO] Starting gunicorn 20.0.4
[2020-08-17 20:26:04  0000] [1] [INFO] Listening at: http://0.0.0.0:8000 (1)
[2020-08-17 20:26:04  0000] [1] [INFO] Using worker: sync
[2020-08-17 20:26:04  0000] [30] [INFO] Booting worker with pid: 30
[2020-08-17 20:26:04  0000] [31] [INFO] Booting worker with pid: 31
[2020-08-17 20:26:04  0000] [32] [INFO] Booting worker with pid: 32
Not Found: /static/admin/css/responsive.css
Not Found: /static/admin/css/login.css
Not Found: /static/admin/css/base.css
  

docker регистрирует ngx

 /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: error: /etc/nginx/conf.d/default.conf differs from the packaged version
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
  

Почему контейнер api docker ищет статические файлы в /static? Я полагаю, что статический каталог установлен в /home/admin / api /static. Буду признателен за любую помощь!