2015-04-24 43 views
4

我的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_NAMEcommand服务领域,并得到它的工作。但是当我启动服务时,$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 

有没有把环境变量占位符命令,以便它可以扩展到实际值时的方式容器已上?

+0

env变量是不是被解析,只是作为一个字符串传递?尝试关闭双引号并回传邮件。 –

+0

感谢您的回复。如果我删除双引号,我会得到相同的消息。 '$ {NGINX_NAME}' – Perlence

+0

我也认为环境变量并没有被替换,因为docker-gen的入口点是'/ usr/local/bin/docker-gen'而不是'/ bin/sh -c'。它根本不知道如何处理变量。 – Perlence

回答

3

我添加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 
    " 

容器名称由泊坞连接注射用“/”开始,但是当我送SIGHUP集装箱用斜线时,信号没有到达:

$ docker kill -s SIGHUP /myproject_dockergen_1/nginx 

如果我去掉它,nginx会重新启动,因为它应该。所以这$(echo $NGINX_NAME | tail -c +2)部分是在这里删除$NGINX_NAME第一个字符。

+0

非常感谢。你让我走在正确的轨道上。我完全错过了“无法重新启动nginx”的消息。 – cstrutton

相关问题