Диспетчер неисправностей - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть приложение с докерской колбой, которое имеет следующую структуру

code_docker
├── docker-compose.yml
├── micr
│   ├── app.py
│   ├── Dockerfile
│   ├── requirements.txt
│   └── templates
│       └── index.html
├── nginx
│   ├── Dockerfile
│   └── nginx.conf
└── README.md

Я использую nginx в качестве балансировщика нагрузки. Код внутри docker-compose.yml и nginx.conf указан ниже

docker-compose.yml

version: '3'

services:

  nginx:
    container_name: nginx
    build: ./nginx
    restart: always
    deploy:
      restart_policy:
        condition: on-failure
    ports:
      - "8540:8540"
    depends_on:
      - micr

  micr:
    build: ./micr
    restart: always 
    deploy: 
      resources:
        limits:
          cpus: '0.50' # 50% of available processing time (CPU)
          memory: 50M  # 50M of memory
        reservations:
          cpus: '0.25'
          memory: 20M
      restart_policy:
        condition: on-failure   
    expose:
      - "8530"
    command: gunicorn -w 1 -b :8530 app:app

nginx.conf

user nginx;

worker_processes 4;

events {
    worker_connections 1024;
}

http {
    keepalive_timeout 15;

    server {
        listen 8540;
        server_name localhost;

        location / {
            proxy_pass http://localhost:8530;
            #proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forward-Host $server_name;
        }
    }
}

Я могу выполнить приведенную ниже команду для масштабированияконтейнер без каких-либо проблем, как видно из сообщения

docker-compose up --scale micr=4

Но когда я пытаюсь получить к ним доступ, я получаю эту ошибку

enter image description here

1 Ответ

0 голосов
/ 13 февраля 2019
  • Вам необходимо создать сеть для Nginx и прокси-контейнеров.Подробнее см. this .
services:
  nginx:
    networks:
      - proxy
    ...

  micr:
    networks:
      - proxy
    ...

networks:
  proxy:
  • . В качестве адресов хоста контейнера необходимо использовать имена сервисов для архивирования связи между контейнерами.Поэтому установите proxy_pass на http://micr:8530
  • . Вы должны установить внедренный dns для докера в распознаватель nginx, чтобы получить возможность воссоздавать контейнеры без перезапуска контейнера nginx.Подробнее см.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...