had*_*adf 2 apache docker lets-encrypt certbot
我在使用Docker和LetsEncrypt时遇到了麻烦.
据我所知,Certbot(在Apache或任何HTTP服务器上安装LetsEncrypt的机器人)检查用户是否拥有与证书关联的域.
所以在Dockerfile中,我添加以下行:
RUN certbot --apache -n --agree-tos --email me@mail.com -d domain.tld
Run Code Online (Sandbox Code Playgroud)
问题是在域检查期间,Certbot会在HTTP Server上安装证书,并检查此服务器是否通过解析域来公开已安装的证书.
我的意思是,只有在在线Web服务器上运行cerbot命令时,域检查才能生效.
但是在Docker镜像构建期间没有启动Apache服务器.
你有什么想法解决这个问题吗?我可以在容器启动后执行命令,但我想在Dockerfile中安装证书.
谢谢
您应该从apache映像中删除certbot,并在另一个容器(如blacklabelops/letsencrypt)中运行letsencrypt.
必须在Webroot模式下启动letsencrypt容器:
$ docker run -d \
-v letsencrypt_certificates:/etc/letsencrypt \
-v letsencrypt_challenges:/var/www/letsencrypt \
-e "LETSENCRYPT_WEBROOT_MODE=true" \
-e "LETSENCRYPT_EMAIL=dummy@example.com" \
-e "LETSENCRYPT_DOMAIN1=example.com" \
--name letsencrypt \
blacklabelops/letsencrypt
Run Code Online (Sandbox Code Playgroud)
注意:此处的证书将写入
letsencrypt_certificatesdocker 卷,将写入webchallengeletsencrypt_challenges
你的apache必须安装该卷并在webroot下发布挑战:/.well-known/acme-challenge/.
例如,letsencrypt_challenges下的文件必须可以在以下位置访问:
http(s)://yourdomain.com/.well-known/acme-challenge/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5274 次 |
| 最近记录: |