Как запустить контейнер обратного прокси 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
У меня проблемы с преобразованием этого в определение задачи в ECS.
Определение задачи
У меня есть два контейнера:
Nginx-обращенно-прокси
- Отображения портов: Host 80 Container 80
- Essential: правда
- Команда: /app/docker-entrypoint.sh
статический сайт
- Отображения портов: Host 5000 Container 5000
- Основное: ложь
- Команда: /some-file.sh
- Env vars: VIRTUAL_HOST static.example.com
У меня есть кластер с одним экземпляром ECS и сервер с одной задачей, определенной выше. Это продолжает работать и завершается с ошибкой "STOPPED (необходимый контейнер в задаче завершен)".
Теперь я предполагаю, что мне нужно настроить тома, но во всех примерах, которые я могу найти, есть путь и имя, и я не вижу, как я могу преобразовать этот "/var/run/docker.sock:/tmp/docker.sock" в любые поля доступны.
1 ответ
Я опаздываю, но в любом случае собираюсь ответить тем людям, которые столкнутся с этим постом в будущем.
Вы ответили сами. Сбой из-за того, что вы не разделяете сокет Docker с хоста, что очень важно для образа прокси-сервера nginx.
Перейдите к определению задачи и добавьте новый том. Назовите его сокетом и укажите путь к хосту /var/run/docker.sock. Затем отредактируйте свой прокси-контейнер nginx и в разделе Точки монтирования выберите socket в качестве исходного тома и /tmp/docker.sock в качестве пути контейнера. Отметьте это как прочитанное только из соображений безопасности. Оставьте секцию Command для этого контейнера со значением по умолчанию.
Разверните новую ревизию, и она должна работать сейчас.