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

如何在Docker容器中运行Vue Dev Server并配置自定义域名访问

问题根源
  • 报错Invalid Host header:Vue CLI 底层依赖的webpack-dev-server默认开启了Host头校验,仅允许localhost、本地IP等默认域名的请求通过,自定义域名local.myapp.com不在白名单内因此被拦截。
  • 报错ERR_EMPTY_RESPONSE:在容器内指定--host=local.myapp.com启动时,服务会绑定到容器内部解析该域名得到的IP,默认容器内/etc/hosts没有配置该域名的映射,会解析到127.0.0.1,仅监听容器本地环回地址的请求,宿主机侧的外部请求无法进入服务层,因此返回空响应。容器内部wget可正常访问,正是因为请求来自容器本地环回地址。
解决方案

方案1:修改启动命令(无需调整项目代码)

容器内启动命令替换为以下内容即可:

yarn serve --port=80 --host=0.0.0.0 --allowed-hosts local.myapp.com

参数说明:

  • --host=0.0.0.0:让服务监听容器所有网卡的请求,宿主机发来的外部请求可以正常进入服务
  • --allowed-hosts local.myapp.com:将自定义域名加入Host头校验白名单,避免拦截报错

方案2:修改vue.config.js配置(永久生效)

在项目根目录的vue.config.js文件中添加devServer相关配置:

module.exports = {
  devServer: {
    host: '0.0.0.0',
    port: 80,
    allowedHosts: ['local.myapp.com']
  }
}

配置完成后容器内直接执行yarn serve即可正常启动,不需要额外加参数。

注:如果使用的是Vue CLI 4以下的旧版本,allowedHosts配置不生效的话,可以临时替换为disableHostCheck: true关闭Host校验,该配置仅推荐开发环境使用,生产环境不要开启。

你现有的宿主机hosts配置、docker-compose端口映射配置都不需要调整,修改完上述配置后即可通过local.myapp.com正常访问应用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 15:57:03