У меня есть две службы в моем docker-compose.yml
: docker-gen и nginx. Docker-gen связан с nginx. Для работы docker-gen я должен передать фактическое имя или хэш контейнера nginx, чтобы docker-gen мог перезапустить nginx при изменении.Использование среды vars контейнера в командной клавише docker-compose
Когда я связываю docker-gen с nginx, в контейнере docker-gen появляется набор переменных окружения, наиболее интересным для меня является NGINX_NAME
- это имя контейнера nginx.
Таким образом, должно быть легко положить $NGINX_NAME
в command
поле обслуживания и заставить его работать. Но $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
Есть ли способ поставить переменные окружения заполнителя в команде, так что может расшириться до фактического значения, когда контейнер вверх?
Является ли переменная env не анализируемой и просто передается как строка? Попробуйте снять двойные кавычки и отправить сообщение назад. –
Спасибо за ответ. Если я удалю двойные кавычки, я получаю одно и то же сообщение. То же самое касается '$ {NGINX_NAME}' – Perlence
. Я думаю, что переменные окружения не заменены, потому что точка входа docker-gen является '/ usr/local/bin/docker-gen', а не'/bin/sh -c'. Он просто не знает, что делать с переменными. – Perlence