
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
https://github.com/nginx-proxy/acme-companion/actions/workflows/test.yml/badge.svg](https://github.com/nginx-proxy/acme-companion/actions/workflows/test.yml) https://img.shields.io/github/release/nginx-proxy/acme-companion.svg](https://github.com/nginx-proxy/acme-companion/releases) https://img.shields.io/docker/image-size/nginxproxy/acme-companion?sort=semver](https://hub.docker.com/r/nginxproxy/acme-companion "Click to view the image on Docker Hub") https://img.shields.io/docker/stars/nginxproxy/acme-companion.svg](https://hub.docker.com/r/nginxproxy/acme-companion "Click to view the image on Docker Hub") https://img.shields.io/docker/pulls/nginxproxy/acme-companion.svg](https://hub.docker.com/r/nginxproxy/acme-companion "Click to view the image on Docker Hub")
acme-companion是https://github.com/nginx-proxy/nginx-proxy%E7%9A%84%E8%BD%BB%E9%87%8F%E7%BA%A7%E9%85%8D%E5%A5%97%E5%AE%B9%E5%99%A8%E3%80%82
它通过ACME协议处理代理Docker容器的SSL证书自动创建、续期和使用。
HTTP-01(默认)或https://github.com/nginx-proxy/acme-companion/blob/main/docs/Let's-Encrypt-and-ACME.md#dns-01-acme-challenge%E9%AA%8C%E8%AF%81%E6%96%B9%E5%BC%8F%E3%80%82如果无法满足这些要求,可使用DNS-01验证方式。详情请参考https://github.com/nginx-proxy/acme-companion/blob/main/docs/Let's-Encrypt-and-ACME.md#dns-01-acme-challenge%E3%80%82
此外,请确保您的DNS提供商正确响应CAA记录请求。https://letsencrypt.org/docs/caa/%E3%80%82Let's Encrypt不要求域名设置CAA记录,只需DNS提供商正确响应即可。
!https://github.com/nginx-proxy/acme-companion/blob/main/schema.png
nginx-proxy容器必须声明两个可写卷,以便与acme-companion容器共享:
/etc/nginx/certs:存储证书和私钥(nginx-proxy容器为只读)。/usr/share/nginx/html:写入http-01验证文件。此外,acme-companion容器需声明第三个卷以存储acme.sh配置和状态:/etc/acme.sh。
另请阅读https://github.com/nginx-proxy/acme-companion/blob/main/./docs/Persistent-data.md%E6%96%87%E6%A1%A3%E3%80%82
使用示例:
启动nginx-proxy并声明两个额外卷:
shell$ docker run --detach \ --name nginx-proxy \ --publish 80:80 \ --publish 443:443 \ --volume certs:/etc/nginx/certs \ --volume html:/usr/share/nginx/html \ --volume /var/run/docker.sock:/tmp/docker.sock:ro \ nginxproxy/nginx-proxy
将主机的docker socket(/var/run/docker.sock)挂载到容器内的/tmp/docker.sock是nginx-proxy的要求。
启动acme-companion容器,通过--volumes-from获取nginx-proxy的卷:
shell$ docker run --detach \ --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
该容器也需挂载主机docker socket,路径为/var/run/docker.sock。
虽然可选,但建议通过DEFAULT_EMAIL环境变量提供有效的默认***,以便Let's Encrypt在证书过期时提醒您并允许账户恢复。
当nginx-proxy和acme-companion容器均启动后,启动需代理的容器时,需设置VIRTUAL_HOST和LETSENCRYPT_HOST环境变量,值为该容器使用的域名。
https://github.com/nginx-proxy/nginx-proxy#usage%E6%8E%A7%E5%88%B6**nginx-proxy**%E7%9A%84%E4%BB%A3%E7%90%86%E9%85%8D%E7%BD%AE%EF%BC%8C%60LETSENCRYPT_HOST%60%E6%8E%A7%E5%88%B6**acme-companion**%E7%9A%84%E8%AF%81%E4%B9%A6%E5%88%9B%E5%BB%BA%E5%92%8CSSL%E5%90%AF%E7%94%A8%E3%80%82
只有同时设置VIRTUAL_HOST和LETSENCRYPT_HOST且域名正确解析到主机、主机可公开访问时,才会颁发证书。
shell$ docker run --detach \ --name your-proxied-app \ --env "VIRTUAL_HOST=subdomain.yourdomain.tld" \ --env "LETSENCRYPT_HOST=subdomain.yourdomain.tld" \ nginx
被代理容器必须暴露需代理的端口,可通过Dockerfile的EXPOSE指令或docker run/docker create的--expose标志实现。
若被代理容器监听并暴露的端口非默认80,可通过https://github.com/nginx-proxy/nginx-proxy#multiple-ports%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E5%BC%BA%E5%88%B6**nginx-proxy**%E4%BD%BF%E7%94%A8%E8%AF%A5%E7%AB%AF%E5%8F%A3%E3%80%82
例如使用https://hub.docker.com/r/grafana/grafana/%EF%BC%88%E6%9A%B4%E9%9C%B2%E5%B9%B6%E7%9B%91%E5%90%AC3000%E7%AB%AF%E5%8F%A3%EF%BC%89%EF%BC%9A
shell$ docker run --detach \ --name grafana \ --env "VIRTUAL_HOST=othersubdomain.yourdomain.tld" \ --env "VIRTUAL_PORT=3000" \ --env "LETSENCRYPT_HOST=othersubdomain.yourdomain.tld" \ --env "LETSENCRYPT_EMAIL=mail@yourdomain.tld" \ grafana/grafana
对其他需代理的容器,重复https://github.com/nginx-proxy/acme-companion/blob/main/README.md#step-3---proxied-containers%E5%8D%B3%E5%8F%AF%E3%80%82
请查看https://github.com/nginx-proxy/acme-companion/tree/main/docs%E3%80%82
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务