【问题标题】:Docker wordpress/ nginx-proxy / nginx-proxy-companion - lets encrypt auto renewal - update image and restart?Docker wordpress/ nginx-proxy / nginx-proxy-companion - 让我们加密自动更新 - 更新映像并重新启动?
【发布时间】: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 客户端所需的更改 - 并且拉动图像并使用新图像重新启动容器将修复自动更新。

如果这是一个正确的假设,我如何在不干扰附加到 wordpressdb 服务的卷的情况下提取最新的 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


【解决方案1】:

我的建议是在不同的服务器上启动一组新的容器,并复制当前卷的内容。
nginx-proxy-companion 容器的升级不应该影响带有 wordpress 的容器,但您要确保一切都兼容。
在新服务器上拥有所有新版本并验证它们按预期工作后,您要么保留它并放弃旧版本,要么在旧服务器上更新同伴的图像。

P.S.:我希望粘贴的 yaml 中的密码不是实际生产中的密码

【讨论】:

【解决方案2】:

document 可以选择提供 URL,按照建议设置 env 变量。

ACME_CA_URI 环境变量用于设置从其请求容器证书的 ACME API 端点(默认为 https://acme-v02.api.letsencrypt.org/directory)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-03
    • 2020-12-31
    • 1970-01-01
    • 2020-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    相关资源
    最近更新 更多