nginx – 在docker-compose的命令键中使用容器的环境变量

前端之家收集整理的这篇文章主要介绍了nginx – 在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置于命令服务字段并使其正常工作应该是直截了当的.但是,当我启动服务时,$Nginx_NAME不会扩展.通过docker-gen日志查看我看到的行:

  1. 2015/04/24 12:54:27 Sending container '$Nginx_NAME' signal '1'
  2. 2015/04/24 12:54:27 Error sending signal to container: No such container: $Nginx_NAME

我的docker_config.yml如下:

  1. Nginx:
  2. image: Nginx:latest
  3. ports:
  4. - '80:80'
  5. volumes:
  6. - /tmp/Nginx:/etc/Nginx/conf.d
  7. dockergen:
  8. image: jwilder/docker-gen:latest
  9. links:
  10. - Nginx
  11. volumes_from:
  12. - Nginx
  13. volumes:
  14. - /var/run/docker.sock:/tmp/docker.sock
  15. - ./extra:/etc/docker-gen/templates
  16. - /etc/Nginx/certs
  17. tty: true
  18. command: >
  19. -watch
  20. -only-exposed
  21. -notify-sighup "$Nginx_NAME"
  22. /etc/docker-gen/templates/Nginx.tmpl
  23. /etc/Nginx/conf.d/default.conf

有没有办法将环境变量占位符置于命令中,以便在容器启动时可以扩展到实际值?

最佳答案
我已经为dockergen服务添加了入口点设置并稍微更改了命令:

  1. dockergen:
  2. image: jwilder/docker-gen:latest
  3. links:
  4. - Nginx
  5. volumes_from:
  6. - Nginx
  7. volumes:
  8. - /var/run/docker.sock:/tmp/docker.sock
  9. - ./extra:/etc/docker-gen/templates
  10. - /etc/Nginx/certs
  11. tty: true
  12. entrypoint: ["/bin/sh","-c"]
  13. command: >
  14. "
  15. docker-gen
  16. -watch
  17. -only-exposed
  18. -notify-sighup $(echo $Nginx_NAME | tail -c +2)
  19. /etc/docker-gen/templates/Nginx.tmpl
  20. /etc/Nginx/conf.d/default.conf
  21. "

Docker注入的容器名称以’/’开头,但是当我将SIGHUP发送到带有斜杠的容器时,信号不会到达:

  1. $docker kill -s SIGHUP /myproject_dockergen_1/Nginx

如果我剥离它,Nginx应该重新启动它.所以这个$(echo $Nginx_NAME | tail -c 2)部分就是从$Nginx_NAME中删除第一个字符.

猜你在找的Nginx相关文章