You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为docker-compose容器配置本地开发自定义域名及本地SSL证书

配置本地自定义域名及SSL证书操作步骤

1. 配置本地hosts解析

首先修改本地系统的hosts文件,添加两条解析记录,将自定义域名指向本地回环地址:

  • Windows系统路径:C:\Windows\System32\drivers\etc\hosts
  • Mac/Linux系统路径:/etc/hosts
    添加内容如下:
127.0.0.1 api.mysite.local
127.0.0.1 www.mysite.local

2. 修改docker-compose.yml配置

调整以下服务的环境变量配置:

2.1 调整php服务环境变量

修改TRUSTED_HOSTS和MERCURE_PUBLIC_URL,适配新的自定义域名:

environment:
  # 其他原有配置保持不变
  TRUSTED_HOSTS: ^${SERVER_NAME:-api\.mysite\.local|www\.mysite\.local}|caddy$$
  MERCURE_PUBLIC_URL: https://api.mysite.local/.well-known/mercure

2.2 调整pwa服务环境变量

修改PWA调用API的入口地址:

environment:
  # 其他原有配置保持不变
  NEXT_PUBLIC_ENTRYPOINT: https://api.mysite.local

2.3 调整caddy服务环境变量

更新SERVER_NAME包含两个自定义域名:

environment:
  # 其他原有配置保持不变
  SERVER_NAME: ${SERVER_NAME:-api.mysite.local, www.mysite.local, caddy:80}

3. 修改Caddyfile配置

将原有单域名配置拆分为两个独立的域名服务块,分别处理API和PWA请求:

{
    # Debug
    {$DEBUG}
    # HTTP/3 support
    servers {
        protocol {
            experimental_http3
        }
    }
}

# 后端API域名配置
api.mysite.local {
    log

    root * /srv/api/public
    mercure {
        # Transport to use (default to Bolt)
        transport_url {$MERCURE_TRANSPORT_URL:bolt:///data/mercure.db}
        # Publisher JWT key
        publisher_jwt {env.MERCURE_PUBLISHER_JWT_KEY} {env.MERCURE_PUBLISHER_JWT_ALG}
        # Subscriber JWT key
        subscriber_jwt {env.MERCURE_SUBSCRIBER_JWT_KEY} {env.MERCURE_SUBSCRIBER_JWT_ALG}
        # Allow anonymous subscribers (double-check that it's what you want)
        anonymous
        # Enable the subscription API (double-check that it's what you want)
        subscriptions
        # Extra directives
        {$MERCURE_EXTRA_DIRECTIVES}
    }
    vulcain
    push

    # Add links to the API docs and to the Mercure Hub if not set explicitly (e.g. the PWA)
    header ?Link `</docs.jsonld>; rel="http://www.w3.org/ns/hydra/core#apiDocumentation", </.well-known/mercure>; rel="mercure"`
    header ?Permissions-Policy "interest-cohort=()"

    php_fastcgi unix//var/run/php/php-fpm.sock
    encode zstd gzip
    file_server
}

# PWA前端域名配置
www.mysite.local {
    log
    reverse_proxy http://{$PWA_UPSTREAM}
}

4. 配置本地信任SSL证书

Caddy默认会为本地域名自动签发自签名证书,只需要将Caddy的根证书导入本地系统信任存储即可消除浏览器的不安全提示:

  1. 导出Caddy本地根证书:
docker cp $(docker compose ps -q caddy):/data/pki/authorities/local/root.crt ./caddy-local-root.crt
  1. 安装证书到本地系统:
  • Mac系统:双击导出的crt文件,添加到系统钥匙串,找到证书后右键选择"显示简介",在"信任"选项卡下将"使用此证书时"设置为"始终信任"
  • Windows系统:右键crt文件选择"安装证书",存储位置选择"本地计算机",下一步后选择"将所有的证书都放入下列存储",浏览选择"受信任的根证书颁发机构",完成安装后重启浏览器
  • Linux系统:将crt文件复制到/usr/local/share/ca-certificates/目录,执行sudo update-ca-certificates命令生效

5. 生效配置

执行以下命令重启容器加载新配置:

docker compose down
# 若需要清空已有数据库数据,可添加-v参数:docker compose down -v
docker compose up -d --build

配置完成后即可通过https://api.mysite.local访问后端API,https://www.mysite.local访问PWA前端,SSL证书为信任状态。


内容的提问来源于stack exchange,提问作者user3174311

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 07:24:06