inhumantsar.dockerautoproxy
dockerautoproxy
什么?
使用 jwilder/nginx-proxy Docker 镜像自动化 Docker Swarm 中的反向代理设置。
如何使用?
角色使用
该镜像设计为动态配置,所以事先不需要做太多准备。请查看 defaults/main.yml
。
默认使用 alpine
镜像,若要使用 debian:jesse
镜像,请将 nginx_version
更改为 latest
。
创建一个名为 nginx_proxy_net
的网络,代理的容器必须加入这个网络。
Nginx 代理使用
需要代理的容器需要做两件事情:暴露要代理的端口,并指定一个虚拟主机。
可以在 Dockerfile 中使用 EXPOSE
指定端口,也可以在命令行中使用 --expose
,或在 Docker Compose 文件中使用 expose
。
虚拟主机必须在名为 VIRTUAL_HOST
的环境变量中指定。
高级用法
自定义 Nginx 配置
可以通过挂载包含 Nginx 配置文件的主机路径来加载自定义配置,使用 dockerautoproxy_config_path
变量。如果主机上该路径不存在,则会自动创建。
SSL 证书
SSL 证书可以自动生成或手动指定。默认情况下,它们存储在容器之间共享的数据卷中。您可以使用 dockerautoproxy_certs_path
挂载主机上的路径以存储证书。
要自动生成证书,请将 Ansible 变量 dockerautoproxy_ssl_companion
设置为 true
。这将启动一个第二个容器来处理使用 Let's Encrypt 的 SSL 证书生成。为了启用此服务,请设置容器的环境变量 LETSENCRYPT_HOST
和 LETSENCRYPT_EMAIL
。例如:
$ docker run -d \
--name example-app \
-e "VIRTUAL_HOST=example.com,www.example.com,mail.example.com" \
-e "LETSENCRYPT_HOST=example.com,www.example.com,mail.example.com" \
-e "[email protected]" \
tutum/apache-php