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

Docker容器内运行Vite服务无法访问问题求助

问题排查与解决步骤

1. 修复Vite服务器监听地址

Vite默认只绑定容器内部的127.0.0.1,导致宿主机无法访问。需要修改vite.config.js,让服务器监听所有网卡:

import {defineConfig} from 'vite';
import laravel from 'laravel-vite-plugin';

export default defineConfig({
    server: {
        port: 3009,
        host: '0.0.0.0' // 新增该行,允许外部访问
    },
    plugins: [
        laravel({
            input: ['resources/css/app.css', 'resources/js/app.js'],
            refresh: true,
        }),
    ],
});

2. 调整npm容器重启策略

当前restart: always会导致容器在命令退出后无限重启,开发环境建议改为restart: no:
修改docker-compose.yml中npm服务的配置:

npm:
    image: node:latest
    container_name: npm
    restart: no # 替换原always配置
    volumes:
      - ./src:/var/www/html
    ports:
      - 3000:3000
      - 3001:3001
      - 3009:3009
    working_dir: /var/www/html
    entrypoint: ['npm']
    networks:
      - laravel

3. 正确启动服务并排查日志

执行命令启动npm服务并运行dev命令:

# 前台运行,便于查看实时日志
docker-compose run --rm npm run dev

# 或后台启动后进入容器执行
docker-compose up -d npm
docker-compose exec npm run dev

查看容器日志确认服务状态:

docker logs npm

若日志显示依赖缺失,先执行docker-compose exec npm install安装依赖。

4. 验证端口与网络连通性

  • 检查宿主机3009端口是否被占用:
# Linux/macOS
lsof -i :3009
# Windows
netstat -ano | findstr :3009

若端口被占用,可更换vite端口或释放占用进程。

  • 测试容器IP连通性:
    先获取容器IP:
docker inspect npm | grep "IPAddress"

访问http://容器IP:3009,若能访问说明宿主机端口映射异常;若不能则容器内部服务未正常启动。

5. 确认Laravel模板资源加载

确保blade模板中正确使用@vite指令:

<!DOCTYPE html>
<html>
<head>
    @vite('resources/css/app.css')
</head>
<body>
    @vite('resources/js/app.js')
</body>
</html>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 16:01:01