Docker在构建期间发布端口

我正在使用Docker构建Nginx环境.我想知道是否有可能在构建期间公开发布端口(80、443),以便letencrypt可以在构建时运行(它需要对(中间)容器中服务器的网络访问).

这可能吗?

最佳答案
我从未见过,我认为这是设计无法实现的.

>请勿将密钥放置在图像中
>您可能需要在2个月后重新确保许可,并需要重建整个映像

通常,这是通过使用伴随的letencrypt Docker映像完成的,有时也称为sidekick.基本上,您有您的应用程序(及其容器)和一个letencrypt容器,公开了一个Nginx然后使用volume_挂载的卷,这是letencrypt容器放置获取的证书的位置.这是在映像启动期间发生的,而不是在映像创建期间发生的.您使用docker-compose文件配置所需的任何内容.

例如.你可以在这里看看
 a)https://github.com/rancher/community-catalog/blob/master/templates/letsencrypt/2/docker-compose.yml
 b)或http://letsencrypt.readthedocs.io/en/latest/using.html#running-with-docker

a)让您使用ENV变量定义所需的域,这将非常适合docker-compose方式,而不在主机上提供任何文件(如配置)(保持可移植性).

您仍然可以将所有这些都放在Nginx服务器上,但是出于许多原因(例如,需要配置Nginx),这并不是最好的做法.

如果您要坚持“构建时间”,则可以选择使用DNS验证模式,因此,与其使用端口上的反向连接进行验证,不如使用DNS条目进行验证,为此提供了一些链接
 –https://github.com/lukas2511/letsencrypt.sh/wiki/Examples-for-DNS-01-hooks
 -a)容器这样做

对于这种情况,您可能要选择http://cloudflare.com-AFAIK,这是唯一可以免费访问无限域的API的DNS服务,其他任何花费或有限制的事情.

相关文章

Docker是什么Docker是 Docker.Inc 公司开源的一个基于 LXC技...
本文为原创,原始地址为:http://www.cnblogs.com/fengzheng...
镜像操作列出镜像:$ sudo docker imagesREPOSITORY TAG IMA...
本文原创,原文地址为:http://www.cnblogs.com/fengzheng/p...
在 Docker 中,如果你修改了一个容器的内容并希望将这些更改...
在Docker中,--privileged 参数给予容器内的进程几乎相同的权...