
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
该镜像为一款轻量级反向代理,设计用于Docker Swarm、Kubernetes等云环境。它监听单个端口的HTTP和HTTPS请求,根据URL(域名和/或路径)将请求转发至内部不可见服务器,或重定向至其他公开URL。镜像高度优化,仅包含nginx(Web服务器)、inotifywait(证书变更监控)和run-nginx(协调程序)三个可执行文件,无shell环境,体积约10MB(含配置)。支持SSL证书自动重载,当/etc/letsencrypt/live目录中证书文件变更时,反向代理会立即 reload 并应用新证书。
注意:配置方式已变更,旧版本用户需迁移。当前配置在构建时生成并包含在镜像中,通过构建参数而非文件、变量或容器链接分析进行配置。
inotifywait监控证书文件变化,实时 reload nginx 以应用新证书反向代理监听以下端口:
8080:HTTP协议8443:HTTPS协议反向代理支持两种工作模式,配置均需在构建时通过构建参数完成,需创建自定义docker-compose.yaml定义配置:
1. 请求转发(FORWARD)
构建时参数FORWARD用于配置请求转发规则,每行定义一条规则,格式为外部源URL 内部目标URL。外部源URL为公开可访问地址,内部目标URL为云环境内部服务地址(非公开)。
2. URL重定向(REDIRECT)
构建时参数REDIRECT用于配置URL重定向规则,每行定义一条规则,格式为源URL 目标URL。源URL和目标URL均需为公开可访问地址,所有对源URL的请求将重定向至目标URL。
3. SSL开关(SSL)
构建时参数SSL可设为off以禁用HTTPS。
以下为docker-compose.yaml配置片段,展示转发和重定向规则配置:
yamlreverse-proxy: image: mwaeckerlin/reverse-proxy ports: - 8080:8080 build: context: . args: SSL: "off" # 禁用HTTPS FORWARD: |- # 转发规则:外部URL 内部服务URL localhost localserver:8080 demo demo:8080 test test:8080 lokal lokal:8080 doesnotrun doesnotrun:8080 REDIRECT: |- # 重定向规则:源URL 目标URL extern pacta.swiss
本地测试步骤
修改本地 hosts 文件:添加以下条目以解析测试域名:
127.0.0.1 localhost demo test lokal extern doesnotrun
构建并启动容器:
bashdocker-compose build docker-compose up
测试访问:
http://localhost:8080:转发至 localserver:8080http://demo:8080:转发至 demo:8080http://test:8080:转发至 test:8080http://lokal:8080:未找到(404错误)http://doesnotrun:8080:显示维护页面http://extern:8080:重定向至 pacta.swiss核心原理
通过与mwaeckerlin/letsencrypt容器共享卷实现SSL证书管理,两容器需共享/etc/letsencrypt(证书存储)和/acme(Let's Encrypt验证目录)卷。证书文件变更时,反向代理自动 reload 应用新证书。
完整配置示例
以下为集成Let's Encrypt的docker-compose.yaml完整配置,包含权限修复、反向代理、证书申请和业务服务:
yamlversion: '3.5' services: # 修复卷权限:确保letsencrypt可写入证书目录 fix-permission: image: mwaeckerlin/very-base command: - '/bin/sh' - '-c' - '${ALLOW_USER} /etc/letsencrypt /acme' volumes: - type: volume source: certificates target: /etc/letsencrypt - type: volume source: acme target: /acme # 反向代理服务 reverse-proxy: image: mwaeckerlin/reverse-proxy build: context: . args: SSL: "on" # 启用HTTPS FORWARD: |- # 转发规则:外部域名 内部服务 example-service.example.com example-service:4000 depends_on: - fix-permission ports: - '80:8080' # 映射主机80端口至容器HTTP端口 - '443:8443' # 映射主机443端口至容器HTTPS端口 networks: - proxy-letsencrypt - proxy-example-service volumes: - type: volume source: certificates target: /etc/letsencrypt # 共享证书目录 - type: volume source: acme target: /acme # 共享Let's Encrypt验证目录 # Let's Encrypt证书申请服务 letsencrypt: image: mwaeckerlin/letsencrypt depends_on: - fix-permission - reverse-proxy environment: EMAIL: 'marc@example.com' # 证书联系人邮箱 DOMAINS: 'example-service.example.com' # 需申请证书的域名 PREFIXES: '' networks: - proxy-letsencrypt volumes: - type: volume source: certificates target: /etc/letsencrypt - type: volume source: acme target: /acme deploy: restart_policy: condition: on-failure # 失败时重启 delay: 1h # 每小时尝试一次(避免频繁失败被封禁) # 示例业务服务 example-service: image: 1845345354.dkr.ecr.eu-central-2.amazonaws.com/example-service depends_on: - example-db environment: APIKEY: APIHOST: APISECRET: DB_TYPE: postgresql DB_NAME: database DB_HOST: example-db DB_USER: user DB_PASSWORD: DB_PORT: 5432 networks: - proxy-example-service - example-db-network deploy: restart_policy: condition: on-failure # 示例数据库服务 example-db: image: postgres:15 environment: POSTGRES_PASSWORD: POSTGRES_USER: user POSTGRES_DB: database volumes: - type: volume source: db-volume target: /var/lib/postgresql/data networks: - example-db-network deploy: restart_policy: condition: on-failure volumes: db-volume: {} # 数据库数据卷 certificates: {} # 证书存储卷 acme: {} # Let's Encrypt验证卷 networks: example-db-network: driver_opts: encrypted: 1 # 加密网络 proxy-letsencrypt: driver_opts: encrypted: 1 proxy-example-service: driver_opts: encrypted: 1
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。





来自真实用户的反馈,见证轩辕镜像的优质服务