nginx LetsEncrypt证书续订脚本无法通过Docker合成运行

pn9klfpd  于 2023-03-07  发布在  Nginx
关注(0)|答案(2)|浏览(167)

bounty将在4天后过期。回答此问题可获得+50的声誉奖励。ksernow正在寻找来自声誉良好来源的答案

我有一个网站运行SSL使用让加密完成。我已经编写/使用了一个脚本下面这个guide,但证书不会自动更新。每90天,我需要手动运行让加密更新命令,以获得新的证书为我的网站。
这是我的docker-compose在nginx和certbot中的样子

nginx:
  build: nginx-image
  image: km-nginx
  volumes:
    - ./data/certbot/conf:/etc/letsencrypt
    - ./data/certbot/www:/var/www/certbot
  ports:
    - 80:80
    - 443:443
  depends_on:
    - keycloak
    - km-app
  links:
    - keycloak
    - km-app
  environment:
    - PRODUCTION=true
  command: "/bin/sh -c 'while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g \"daemon off;\"'"
  

 certbot:
    image: certbot/certbot
    restart: unless-stopped
    volumes:
      - ./data/certbot/conf:/etc/letsencrypt
      - ./data/certbot/www:/var/www/certbot
    entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew --webroot -w /var/www/certbot; sleep 12h & wait $${!}; done;'"
4smxwvx5

4smxwvx51#

您应该将cerbot verbose选项添加到cerbot renew命令中,以便检查正在发生的情况。
该指南提到:
编辑脚本以添加您的域和电子邮件地址。
如果您更改了共享Docker卷的目录,请确保同时调整了data_path变量。
因此,请检查init-letsencrypt.sh并确保:

  • 已设置正确的域/电子邮件
  • data_path="./data/certbot"路径存在于您的主机上,因为这是由container装载的路径。
rpppsulh

rpppsulh2#

您可以按照我的步骤自动更新CA密钥(Http)

## Step:1. Config your nginx.conf with your Email and Domain name and then Running 'docker run"
docker run -itd --name test  --network=host  \
-v "${PWD}"/nginx.conf:/etc/nginx/conf.d/nginx.conf \
-v "${PWD}"/nginx.sh:/etc/nginx/nginx.sh -v "${PWD}"/cronjob:/etc/cron.d/cronjob \
-v"${PWD}"/:/etc/letsencrypt/ \
williehao:nginx-cert:V20.04

## Step:2. Get a CA Key from your host's direction
ls *** (your domain name)

## if you didn't see CA key please use "find" command line to find CA key location
sudo find / -name fullchain.pem 

## Step3: Combine CA key to another container(APP) which wants to use CA Key: (For example Ant-Media-Server)
Docker run  -v "${PWD}"/:/etc/letsencrypt/  ***

PS:More detail reference

相关问题