Docker Nginx: хост не найден в апстриме - PullRequest
1 голос
/ 27 марта 2020

У меня запущено приложение docker в экземпляре aws EC2, и в настоящее время я пытаюсь сопоставить приложение с внешним IP-адресом, используя Nginx. Вот снимок запущенных мной контейнеров:

enter image description here

Мое тестовое приложение - довольно простое приложение, отображающее состояние c html веб-сайт. И я развернул его с помощью следующей команды:

docker run -d --name=test-app test-app

Прокси-сервер nginx имеет следующий proxy.conf

server {
  listen 80;
  location / {
    proxy_pass http://test-app;
  }
}

Вот Dockerfile для nginx прокси:

FROM nginx:alpine

RUN rm /etc/nginx/conf.d/*

COPY proxy.conf /etc/nginx/conf.d/

nginx -прокси запускается с помощью следующей команды: docker run -d -p 80:80 --name=nginx-proxy nginx-proxy

Однако контейнер nginx никогда запускается, и вот журнал ошибок я получаю

2020/03/27 15:55:19 [emerg] 1#1: host not found in upstream "test-app" in /etc/nginx/conf.d/proxy.conf:5
nginx: [emerg] host not found in upstream "test-app" in /etc/nginx/conf.d/proxy.conf:5

1 Ответ

1 голос
/ 28 марта 2020

Пока оба ваших контейнера работают и вы правильно выставили порты, необходимые для контейнера NGINX. Вы не выставили никаких портов для контейнера test-app. Контейнер NGINX не может с ним разговаривать. Экспонирование портов напрямую с помощью docker run, скорее всего, лишит вас смысла использовать обратный прокси в вашей ситуации. Поэтому вместо этого вам следует создать Network для обоих ваших Docker контейнеров, а затем добавить их в него. Тогда они смогут общаться друг с другом по мосту. Например:

docker network create example
docker run -d --network=example --name=test-app test-app
docker run -d -p 80:80 --network=example --name=nginx-proxy nginx-proxy

Теперь, когда у вас есть оба модуля в одной сети, Docker включит обнаружение службы на основе DNS между ними по имени контейнера, и вы будете в состоянии разрешить их друг от друга. Вы можете проверить подключение следующим образом: docker exec -it nginx-proxy ping test-app. Что ж, при условии, что ping установлен в этом Docker контейнере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...