我的docker-compose.yml
中有两个服务:docker-gen和nginx。 Docker-gen链接到nginx。为了让docker-gen工作,我必须传递nginx容器的实际名称或哈希值,以便docker-gen可以在更改时重新启动nginx。在Docker的命令键中使用容器的环境变量 - 构成
当我将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