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

Docker容器运行Vite React项目出现esbuild报错该如何解决?

问题根因

你当前的挂载逻辑将本地整个frontend目录(包括宿主机操作系统对应的node_modules)直接覆盖了容器内的目录。esbuild依赖对应操作系统的二进制包运行,若你的宿主机是Windows/macOS,本地安装的esbuild为对应宿主平台的版本,Linux容器运行时自然会找不到需要的esbuild-linux-64包。

快速修复方案

修改docker-compose.yml的web服务配置,新增匿名卷排除node_modules目录的挂载,同时补充容器内依赖安装逻辑:

version: "3.8"
services:
  api:
    image: node:16-slim
    volumes:
      - ./backend:/app
      - ./shared:/shared
      # 同理给api也加node_modules匿名卷,避免本地依赖覆盖
      - /app/node_modules
    working_dir: /app
    # 启动前先装依赖
    command: sh -c "yarn install && yarn start:dev"
    ports:
      - "3001:3001"
  web:
    image: node:16-slim
    volumes:
      - ./frontend:/app
      - ./shared:/shared
      # 新增:匿名卷挂载node_modules,避免本地依赖覆盖容器内的Linux版本依赖
      - /app/node_modules
    working_dir: /app
    # 启动前先装对应Linux平台的依赖
    command: sh -c "yarn install && yarn dev"
    ports:
      - "3000:3000"

如果是Windows/WSL环境下热重载不生效,可在vite.config.js的server配置中新增轮询监听配置:

export default defineConfig({
  server: {
    host: "0.0.0.0",
    port: 3000,
    fs: {
      strict: false,
    },
    // 新增:WSL/Windows环境开启轮询实现热重载
    watch: {
      usePolling: true
    }
  },
  plugins: [react()],
});

兼顾开发、生产场景的标准配置方案

1. 拆分Dockerfile

在frontend目录下分别创建开发用Dockerfile.dev和生产用Dockerfile.prod:

  • Dockerfile.dev(开发环境)
FROM node:16-slim
WORKDIR /app
# 先拷贝依赖清单安装依赖,利用镜像缓存加快构建速度
COPY package.json yarn.lock ./
RUN yarn install --frozen-lockfile
COPY . .
  • Dockerfile.prod(生产环境,多阶段构建减小镜像体积)
# 构建阶段
FROM node:16-slim AS builder
WORKDIR /app
COPY package.json yarn.lock ./
RUN yarn install --frozen-lockfile
COPY . .
RUN yarn build

# 运行阶段:用nginx托管静态资源
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
# 自行添加nginx配置文件,配置端口、路由规则等
COPY nginx.conf /etc/nginx/conf.d/default.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

2. 拆分docker-compose配置

分别创建docker-compose.dev.yml和docker-compose.prod.yml,避免不同环境配置混杂:

  • 开发环境启动命令:docker-compose -f docker-compose.dev.yml up
  • 生产环境构建启动命令:docker-compose -f docker-compose.prod.yml up --build

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:06:03