Intereting Posts
Вход / выход Docker вне контейнера Как использовать плагин docker в centos Похоже, что сборка Docker не видит требований. Txt, хотя он находится в одном каталоге Не удается получить доступ к службе postgresql Kubernetes извне Docker, сохраняющий созданный пользователем файл при обновлении изображений Как запустить команды конфигурации после запуска в Docker? Запуск Laravel Jobs в нескольких целях Контейнер-докер не может подключаться к службам связанных контейнеров docker aufs для контейнера докеры devicemapper и миграции изображений ECONNREFUSED nodeJS с экспресс-контейнером для докеров Редактирование файлов с помощью редакторов в Docker с помощью Vagrant (на Mac) Создает ли Dockerfile одно изображение или несколько изображений? Доступ к внешнему файлу Docker не включен / Пользователи / на OSX Доступ к папке журналов для запуска контейнера докеров Запуск узла Chrome Chrome в EC2 не загружает файлы

Использовать среду vars контейнера в командном ключе docker-compose

У меня есть две службы в моем docker-compose.yml : docker-gen и nginx. Docker-gen связан с nginx. Для работы docker-gen я должен передать фактическое имя или хэш контейнера nginx, чтобы docker-gen мог перезапустить nginx при изменении.

Когда я связываю docker-gen с nginx, в контейнере docker-gen появляется набор переменных среды, наиболее интересным для меня является NGINX_NAME – это имя контейнера nginx.

Поэтому должно быть просто поставить $NGINX_NAME в поле command $NGINX_NAME и заставить его работать. Но $NGINX_NAME не расширяется, когда я запускаю службы. Просматривая журналы докеров, я вижу строки:

 2015/04/24 12:54:27 Sending container '$NGINX_NAME' signal '1' 2015/04/24 12:54:27 Error sending signal to container: No such container: $NGINX_NAME 

Мой docker_config.yml выглядит следующим образом:

 nginx: image: nginx:latest ports: - '80:80' volumes: - /tmp/nginx:/etc/nginx/conf.d dockergen: image: jwilder/docker-gen:latest links: - nginx volumes_from: - nginx volumes: - /var/run/docker.sock:/tmp/docker.sock - ./extra:/etc/docker-gen/templates - /etc/nginx/certs tty: true command: > -watch -only-exposed -notify-sighup "$NGINX_NAME" /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf по теме nginx: image: nginx:latest ports: - '80:80' volumes: - /tmp/nginx:/etc/nginx/conf.d dockergen: image: jwilder/docker-gen:latest links: - nginx volumes_from: - nginx volumes: - /var/run/docker.sock:/tmp/docker.sock - ./extra:/etc/docker-gen/templates - /etc/nginx/certs tty: true command: > -watch -only-exposed -notify-sighup "$NGINX_NAME" /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf 

Есть ли способ поместить переменную среды в команду, чтобы она могла расширяться до фактического значения, когда контейнер вверх?

Я добавил настройку точки входа в службу докеров и немного изменил command :

 dockergen: image: jwilder/docker-gen:latest links: - nginx volumes_from: - nginx volumes: - /var/run/docker.sock:/tmp/docker.sock - ./extra:/etc/docker-gen/templates - /etc/nginx/certs tty: true entrypoint: ["/bin/sh", "-c"] command: > " docker-gen -watch -only-exposed -notify-sighup $(echo $NGINX_NAME | tail -c +2) /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf " по теме dockergen: image: jwilder/docker-gen:latest links: - nginx volumes_from: - nginx volumes: - /var/run/docker.sock:/tmp/docker.sock - ./extra:/etc/docker-gen/templates - /etc/nginx/certs tty: true entrypoint: ["/bin/sh", "-c"] command: > " docker-gen -watch -only-exposed -notify-sighup $(echo $NGINX_NAME | tail -c +2) /etc/docker-gen/templates/nginx.tmpl /etc/nginx/conf.d/default.conf " 

Названия контейнеров, введенные Docker, начинаются с '/', но когда я посылаю SIGHUP в контейнеры с ведущей косой чертой, сигнал не поступает:

 $ docker kill -s SIGHUP /myproject_dockergen_1/nginx 

Если я уберу его, nginx перезапустится, как следует. Итак, эта часть $(echo $NGINX_NAME | tail -c +2) здесь, чтобы удалить первый символ из $NGINX_NAME .