acme-companion 项目使用教程
项目介绍
acme-companion 是一个轻量级的容器,专为 nginx-proxy 设计。它通过 ACME 协议自动处理代理 Docker 容器的 SSL 证书的创建、更新和使用。主要功能包括:
- 使用 acme.sh 自动创建和更新 Let's Encrypt(或其他 ACME CA)证书。
- 支持 Let's Encrypt / ACME 域名。
项目快速启动
步骤 1:启动 nginx-proxy
首先,启动 nginx-proxy 容器:
docker run -d -p 80:80 -p 443:443 \
--name nginx-proxy \
--volume /path/to/certs:/etc/nginx/certs:ro \
--volume /etc/nginx/vhost.d \
--volume /usr/share/nginx/html \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
nginxproxy/nginx-proxy
步骤 2:启动 acme-companion
接着,启动 acme-companion 容器:
docker run -d \
--name nginx-proxy-acme \
--volumes-from nginx-proxy \
--volume /var/run/docker.sock:/var/run/docker.sock:ro \
--volume acme:/etc/acme.sh \
--env "DEFAULT_EMAIL=mail@yourdomain.tld" \
nginxproxy/acme-companion
步骤 3:启动被代理的容器
最后,启动需要被代理的容器,并设置环境变量 VIRTUAL_HOST
和 LETSENCRYPT_HOST
:
docker run -d \
--env "VIRTUAL_HOST=yourdomain.tld" \
--env "LETSENCRYPT_HOST=yourdomain.tld" \
your-image
应用案例和最佳实践
应用案例
假设你有一个运行在 Docker 上的 Web 应用,你可以使用 acme-companion 来自动管理其 SSL 证书。例如,你有一个博客应用,通过以下步骤可以实现自动 SSL 证书管理:
- 启动 nginx-proxy 和 acme-companion 容器。
- 启动博客应用容器,并设置
VIRTUAL_HOST
和LETSENCRYPT_HOST
为blog.yourdomain.tld
。
最佳实践
- 确保
DEFAULT_EMAIL
环境变量设置正确,以便接收证书过期通知。 - 定期检查日志,确保证书自动更新正常工作。
- 使用 Docker Compose 来管理多个容器,以便更方便地进行部署和维护。
典型生态项目
acme-companion 通常与以下项目一起使用:
- nginx-proxy:核心代理服务,负责处理 HTTP/HTTPS 请求。
- Docker:容器化平台,用于运行和管理所有相关容器。
- Let's Encrypt:提供免费的 SSL 证书,通过 acme.sh 进行自动化管理。
通过这些项目的协同工作,可以实现高效的容器化应用部署和 SSL 证书管理。