【发布时间】:2015-04-24 13:33:16
【问题描述】:
我的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 在我启动服务时不会扩展。查看 docker-gen 日志,我看到以下行:
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}也是如此 -
我认为环境变量没有被替换,因为 docker-gen 的入口点是
/usr/local/bin/docker-gen而不是/bin/sh -c。它根本不知道如何处理变量。
标签: nginx docker docker-compose