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

如何从宿主机访问Docker-in-Docker(Dind)内的Ddev站点?

解决Dind容器内Ddev TYPO3站点域名无法从宿主机访问的问题

核心问题分析

Ddev默认使用*.ddev.site自定义域名,这类域名仅在Dind容器内部通过Ddev内置DNS解析到对应站点容器;宿主机无法直接解析该域名,且单纯端口映射后直接用IP访问会触发Nginx 503错误(因为站点配置绑定了特定域名,而非IP)。

解决方案步骤

1. 配置宿主机DNS解析

在Windows系统的hosts文件(路径:C:\Windows\System32\drivers\etc\hosts)中添加以下解析规则,让宿主机将目标域名指向本地:

127.0.0.1 recruiting.ddev.site

编辑后保存(需管理员权限)。

2. 调整Dind容器端口映射与Ddev站点端口

  • 进入Dind容器,查看当前Ddev站点的实际监听端口:
    ddev describe recruiting
    
    输出中会显示HTTP Port和HTTPS Port(例如8036、8037)。
  • 修改Dind容器启动命令,将站点端口映射到宿主机对应端口:
    docker run --rm -it --privileged -v ${PWD}/project:/usr/src/project -p 80:8036 -p 443:8037 dindu
    
  • 若需固定端口,可在启动Ddev站点时指定:
    ddev start recruiting --http-port=8036 --https-port=8037
    

3. 确认Ddev站点Nginx配置正确性

进入Ddev的web容器,检查Nginx配置中server_name是否包含目标域名:

ddev ssh recruiting
cat /etc/nginx/sites-enabled/default | grep server_name

确保输出包含recruiting.ddev.site,且未绑定到特定IP(应为_或具体域名)。

4. 测试访问

完成以上配置后,直接在宿主机浏览器访问http://recruiting.ddev.site即可。若仍无法访问:

  • 在Dind容器内执行curl recruiting.ddev.site:8036确认内部访问正常;
  • 检查宿主机防火墙是否允许80/443端口的入站流量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:39:34