如何为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的根证书导入本地系统信任存储即可消除浏览器的不安全提示:
- 导出Caddy本地根证书:
docker cp $(docker compose ps -q caddy):/data/pki/authorities/local/root.crt ./caddy-local-root.crt
- 安装证书到本地系统:
- 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
相关产品推荐
相关产品推荐

