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

无需修改hosts文件,如何通过URL访问Docker容器内多站点?

解决方案

方案1:用本地DNS自动解析.docker后缀域名

在Windows上部署轻量DNS服务器,让所有.docker结尾的域名自动指向127.0.0.1,新增站点时只需配置Apache虚拟主机,无需修改hosts:

  • 推荐工具:Acrylic DNS Proxy(Windows平台专用,配置简单)
    1. 下载安装Acrylic后,打开配置文件AcrylicHosts.txt
    2. 添加一行:127.0.0.1 *.docker
    3. 重启Acrylic服务,将Windows网络适配器的IPv4 DNS服务器设置为127.0.0.1
  • 或用dnsmasq(通过WSL2运行,适合熟悉Linux的用户):
    1. 在WSL2中安装dnsmasq,添加配置address=/docker/127.0.0.1
    2. 将Windows的DNS指向WSL2的IP(可通过wsl hostname -I获取)

方案2:用Traefik反向代理(结合Docker Compose)

Traefik能自动发现Docker容器的路由规则,无需手动修改hosts或重复配置Apache虚拟主机:

  1. 编写docker-compose.yml,配置Traefik作为流量入口:
version: '3.8'
services:
  traefik:
    image: traefik:v2.10
    command:
      - "--api.insecure=true" # 开发环境开启控制台,生产环境请关闭
      - "--providers.docker=true"
      - "--providers.docker.exposedbydefault=false"
      - "--entrypoints.web.address=:80"
    ports:
      - "80:80"
      - "8080:8080" # Traefik控制台端口
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock" # 让Traefik访问Docker API

  apache-php:
    image: your-apache-php-image # 替换为你的Apache-PHP镜像
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.site1.rule=Host(`site1.docker`)"
      - "traefik.http.routers.site1.entrypoints=web"
      - "traefik.http.routers.site2.rule=Host(`site2.docker`)"
      - "traefik.http.routers.site2.entrypoints=web"
    volumes:
      - ./site1:/var/www/site1 # 挂载站点目录
      - ./site2:/var/www/site2
      - ./apache-config:/etc/apache2/sites-available # 挂载自定义Apache配置(可选)
  1. 启动服务:docker-compose up -d
  2. 新增站点时,只需在apache-php服务的labels中添加对应路由规则即可,配合方案1的DNS解析实现自动访问。

方案3:自动化管理hosts文件(次优)

如果不想用DNS或反向代理,可通过脚本自动更新hosts:

  • 编写PowerShell脚本,检测并追加新增域名到hosts文件:
$hostsPath = "C:\Windows\System32\drivers\etc\hosts"
$newDomains = @("site3.docker", "site4.docker") # 替换为新增的域名
$content = Get-Content $hostsPath -Raw

foreach ($domain in $newDomains) {
    if ($content -notmatch "127\.0\.0\.1.*$domain") {
        Add-Content $hostsPath "`n127.0.0.1   $domain"
    }
}
  • 需以管理员身份运行脚本,避免权限问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 02:56:02