先不着急执行此命令,需要先去nginx的域名下面配置验证文件:
在nginx.conf下配置
对应关系如下:
宿主机和nginx容器对应文件目录
文件名称 | 文件拥有者 |
---|---|
/my/nginx/html | 宿主机目录位置 |
/usr/share/nginx/html | nginx容器 |
宿主机和certbot容器对应文件目录
文件名称 | 文件拥有者 |
---|---|
/my/nginx/html/certbot | 宿主机目录位置 |
/data/letsencrypt | cerbot |
执行上面的命令后, 验证文件会放在cerbot 容器的 /data/letsencrypt /.well-known/acme-challenge/,对应着 宿主机的 /my/nginx/html/certbot/.well-known/acme-challenge/ ,也就是对应nginx容器对应的
/usr/share/nginx/html/certbot/.well-known/acme-challenge/
。 通过这对应关系,后面才能执行成功。
# 处理特定后缀的请求
location ~/.well-known/acme-challenge/ {
root /usr/share/nginx/html/certbot;
}
- 1
- 2
- 3
- 4
- 5
执行命令:
docker run -it --rm --name certbot \
-v /my/nginx/ssl/wiseinsightai/certbot/etc/letsencrypt:/etc/letsencrypt \
-v /my/nginx/ssl/wiseinsightai/certbot/var/lib/letsencrpt:/var/lib/letsencrypt \
-v /my/nginx/ssl/wiseinsightai/certbot/var/log/letsencrpt:/var/log/letsencrypt \
-v /my/nginx/html/certbot:/data/letsencrypt \
certbot/certbot certonly \
--webroot \
--webroot-path=/data/letsencrypt \
--agree-tos -d XXX.com
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
正常情况下,执行成功,会生成证书,在/etc/letsencrypt/live/域名/live下,对应的宿主机目录下:
再根据对nginx容器的容器卷映射,转成nginx的目录:
即: # 对应 /my/nginx/ssl/wiseinsightai/certbot/etc/letsencrypt/live/域名