Per*_*nce 5 nginx docker 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当我启动服务时不会扩展.通过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
Run Code Online (Sandbox Code Playgroud)
我的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
Run Code Online (Sandbox Code Playgroud)
有没有办法将环境变量占位符置于命令中,以便在容器启动时可以扩展到实际值?
我已将设置添加entrypoint到 dockergen 服务并进行了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
"
Run Code Online (Sandbox Code Playgroud)
Docker 链接注入的容器名称以“/”开头,但是当我发送SIGHUP到带有前导斜杠的容器时,信号不会到达:
$ docker kill -s SIGHUP /myproject_dockergen_1/nginx
Run Code Online (Sandbox Code Playgroud)
如果我剥离它,nginx 会按预期重新启动。所以这$(echo $NGINX_NAME | tail -c +2)部分是为了从 中删除第一个字符$NGINX_NAME。
| 归档时间: |
|
| 查看次数: |
2039 次 |
| 最近记录: |