3

Я немного измененную версию контейнера здесь:Как запустить Nginx обратный прокси-контейнер на ECS, используя аргументы

http://jasonwilder.com/blog/2014/03/25/automated-nginx-reverse-proxy-for-docker/

Чтобы запустить его локально я использую:

$ docker run -d -p 80:80 -v /var/run/docker.sock:/tmp/docker.sock -t jwilder/nginx-proxy 

И запустите мои другие контейнеры, как показано ниже:

$ docker run -e VIRTUAL_HOST=my-domain.local -t -d my-repo/site-name 

У меня проблемы с con вернув это в определение задачи в ECS.

определение задач

У меня есть два контейнера:

Nginx-реверс-прокси

  • Порт отображения: Хост 80 Контейнер 80
  • Essential: истинный
  • Команда: /app/docker-entrypoint.sh

статический сайт

  • Порт отображения: Хост 5000 Контейнер 5000
  • Essential: ложные
  • Команда: /some-file.sh
  • конв вары: VIRTUAL_HOST static.example.com

У меня есть кластер с одним экземпляром ECS и сервером с одной задачей, определенной выше. Это приводит к циклическому отключению и завершается с ошибкой «STOPPED (основной контейнер в задаче)».

Теперь я предполагаю, что мне нужно настроить тома, но все примеры, которые я могу найти, имеют путь и имя, и я не вижу, как я могу преобразовать этот файл /var/run/docker.sock:/tmp/docker .sock "в любые доступные поля.

+0

Глупый вопрос, но разве это не может быть достигнуто с балансировщиками ELB/ALB AWS? Зачем использовать nginx? – codepushr

+0

AWS взимает * много * за ELB. Так как вам потенциально нужен один для каждого контейнера, который вы запускаете на ECS, он быстро добавляет до сотни долларов в месяц только для ELB, если у вас много мелких услуг. – BjornW

ответ

3

Я довольно поздно, но я все равно буду отвечать тем, кто сталкивается с этим посту в будущем.

Вы ответили сами. Он терпит неудачу, потому что вы не используете сокет Docker с хоста, что необходимо для образа прокси nginx.

Перейдите к определению задачи и добавьте новый том. Назовите его socket и укажите путь к хосту /var/run/docker.sock. Затем отредактируйте свой прокси-сервер nginx и в разделе «Точки монтирования» выберите сокет в качестве источника звука и /tmp/docker.sock в качестве пути к контейнеру. Отметьте его как прочитанное только по соображениям безопасности. Оставьте раздел Command для этого контейнера со значением по умолчанию.

Разверните новую версию, и она должна работать сейчас.

Смежные вопросы