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

如何正确Docker化Solid.js应用?本地访问容器内应用失败求助

解决Docker运行Solid.js项目无法本地访问的问题

核心原因

Solid Start的开发服务器默认仅监听127.0.0.1(容器内部的回环地址),而Docker端口映射是将宿主机端口转发到容器的公共网络接口。由于服务没有监听容器的0.0.0.0(所有可用网络接口),宿主机无法通过localhost:3000访问到容器内的服务。这也是你用Next.js能成功的原因——Next.js开发服务器默认监听0.0.0.0。

解决方案

方法1:修改package.json启动命令

在项目根目录的package.json中,给dev命令添加--host 0.0.0.0参数:

{
  "scripts": {
    "dev": "solid-start dev --host 0.0.0.0",
    // 其他脚本保持不变
  }
}

方法2:直接修改Dockerfile的CMD指令

如果不想改动package.json,可以在Dockerfile中直接指定启动参数:

FROM node:20-alpine

WORKDIR /app

COPY package.json .

RUN npm install

COPY . .

EXPOSE 3000

CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0"]

验证步骤

  1. 重新构建镜像:
    docker build -t demo-image:v1 .
    
  2. 启动容器:
    docker run --name demo-container --rm -p 3000:3000 demo-image:v1
    
  3. 访问http://localhost:3000,此时应该能正常加载Solid.js应用。

额外排查点

如果问题仍存在,可做以下检查:

  • 查看容器日志确认服务是否正常启动:
    docker logs demo-container
    
    正常情况下会看到类似Server running on http://0.0.0.0:3000的输出。
  • 检查宿主机3000端口是否被其他进程占用:
    • macOS/Linux:lsof -i :3000
    • Windows:netstat -ano | findstr :3000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 14:22:38