Docker + хост Nginx не найден в апстриме в докере - PullRequest
0 голосов
/ 20 июня 2019

Я пытаюсь запустить контейнеры Nginx и PHP-FPM с помощью network_mode: host в docker-compose, при определении network_mode как «bridge» он работает нормально, но при определении network_mode как «host» я получаю:

nginx: [emerg] хост не найден в вышестоящем "пользовательском интерфейсе" в /etc/nginx/conf.d/ui.conf:10

Все отлично работает при настройке network_mode для моста, к сожалению, мне нужноустановите его на хост, так как мне нужен доступ к сети хоста, чтобы я мог получить доступ к камере ueye.

Это мой файл docker-compose

version: '3'

services:
 nginx:
    image: nginx:alpine
    container_name: nginx
    tty: true
    ports:
      - "80:80"
      - "443:443"
      - "8000:8000"
    volumes:
      - ./../../ui/:/var/www/
      - ./nginx/:/etc/nginx/conf.d/
    network_mode: host

    depends_on:
      - ui
    restart: always
 ui:
    build:
      context: ./../../ui
      dockerfile: Dockerfile
    volumes:
      - ./../../ui/:/var/www/
    container_name: ui
    tty: true
    environment:
      SERVICE_NAME: ui
    working_dir: /var/www
    network_mode: host
    ports:
      - "9000:9000"

Файл конфигурации nginx

server {
    listen 80;
    index index.php index.html;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/public;
    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass ui:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
    location / {
        try_files $uri $uri/ /index.php?$query_string;
        gzip_static on;
    }
}

1 Ответ

0 голосов
/ 20 июня 2019

При использовании режима сети хоста ваш контейнер будет видеть хост Docker как localhost, а не сам контейнер, потому что он использует сеть хоста. Попробуйте заменить ui на localhost в вашей конфигурации nginx -

    fastcgi_pass localhost:9000;
...