【发布时间】:2021-07-22 04:06:19
【问题描述】:
我们在 aws ec2 上有一个 wordpress 站点,该站点设置为通过 Let's Encrypt 自动更新其 SSL 证书。
自动续订最近已停止,证书已过期。
我试图运行docker exec {container_id} /app/force_renew,但收到此错误:
ACME 服务器返回错误:urn:acme:error:serverInternal :: 服务器遇到内部错误 :: ACMEv1 已弃用,您无法再从此端点获取证书。请使用 ACMEv2 端点,您可能需要更新 ACME 客户端软件才能这样做。访问https://community.letsencrypt.org/t/end-of-life-plan-for-acmev1/88430/27了解更多信息。
我假设 jrcs/letsencrypt-nginx-proxy-companion 图像已经更新以处理 ACME 客户端所需的更改 - 并且拉动图像并使用新图像重新启动容器将修复自动更新。
如果这是一个正确的假设,我如何在不干扰附加到 wordpress 或 db 服务的卷的情况下提取最新的 jrcs/letsencrypt-nginx-proxy-companion 映像并重新启动容器?
如果假设不正确,如何修复证书自动续订?
version: '3.1'
services:
nginx-proxy:
container_name: nginx-proxy
image: jwilder/nginx-proxy:latest
restart: always
ports:
- 80:80
- 443:443
volumes:
- conf:/etc/nginx/conf.d
- vhost:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- dhparam:/etc/nginx/dhparam
- certs:/etc/nginx/certs:ro
- /var/run/docker.sock:/tmp/docker.sock:ro
nginx-proxy-companion:
image: jrcs/letsencrypt-nginx-proxy-companion:latest
restart: always
volumes:
- conf:/etc/nginx/conf.d
- vhost:/etc/nginx/vhost.d
- html:/usr/share/nginx/html
- dhparam:/etc/nginx/dhparam
- certs:/etc/nginx/certs:rw
- /var/run/docker.sock:/var/run/docker.sock:ro
depends_on:
- nginx-proxy
environment:
DEFAULT_EMAIL: dev@mysite.com
NGINX_PROXY_CONTAINER: nginx-proxy
wordpress:
image: wordpress
restart: always
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: myuser
WORDPRESS_DB_PASSWORD: mypass
WORDPRESS_DB_NAME: mydb
VIRTUAL_HOST: mysite.com
LETSENCRYPT_HOST: mysite.com
volumes:
- ./wp-content:/var/www/html/wp-content
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: mydb
MYSQL_USER: myuser
MYSQL_PASSWORD: mypass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- ./mysql-data:/var/lib/mysql
command: mysqld --sql-mode=""
volumes:
conf:
vhost:
html:
dhparam:
certs:
【问题讨论】:
-
运行
docker logs <container_name or id>看看日志是否可以帮助您 -
它在问题中显示了同样的错误
-
你的wordpress容器不依赖nginx,“不干扰wordpress服务”是什么意思?
-
P. S. 不要在生产中使用
latest -
这个问题更适合serverfault.com 吗?
标签: docker nginx jwilder-nginx-proxy