我无法访问 dockerized React 应用程序

Ous*_*chi 0 ubuntu docker reactjs dockerfile

我正在尝试在 Docker 容器上运行 React 应用程序,因此我构建了映像,然后运行容器。但是,我无法访问该应用程序。

\n

操作系统Ubuntu 22.04.2 LTS\n防火墙不活动sudo ufw 状态

\n
Status: inactive\n
Run Code Online (Sandbox Code Playgroud)\n

Dockerfile

\n
FROM node:16-alpine3.14\n\nWORKDIR /entreprise\n\nCOPY . .\n\nRUN npm install\n\nRUN npm run build\n\nCMD [ "npm", "run", "dev"]\n
Run Code Online (Sandbox Code Playgroud)\n

docker ps输出:

\n
CONTAINER ID   IMAGE                 COMMAND                  CREATED         STATUS         PORTS                                       NAMES\n3a8edf622b9d   react-entreprise:v1   "docker-entrypoint.s\xe2\x80\xa6"   9 seconds ago   Up 7 seconds   0.0.0.0:5173->5173/tcp, :::5173->5173/tcp   entrepriseFN\n\n
Run Code Online (Sandbox Code Playgroud)\n

docker 日志 3a8edf622b9d输出:

\n
> entreprise@0.0.0 dev\n> vite\n\n\n  VITE v4.2.1  ready in 1011 ms\n\n  \xe2\x9e\x9c  Local:   http://localhost:5173/\n  \xe2\x9e\x9c  Network: use --host to expose\n\n
Run Code Online (Sandbox Code Playgroud)\n

我试过

\n
    \n
  • 重建图像
  • \n
  • 重新运行容器
  • \n
  • 检查防火墙
  • \n
  • 并将端口映射到另一个端口
  • \n
\n

Han*_*ian 5

默认情况下,vite绑定到 localhost。这意味着您的应用程序将只接受来自本地主机的连接。在容器中,localhost 就是容器本身,因此您的应用程序拒绝接受来自容器外部的连接。

要修复它,您需要打开 package.json 文件并将脚本行dev

"dev": "vite",
Run Code Online (Sandbox Code Playgroud)

"dev": "vite --host 0.0.0.0",
Run Code Online (Sandbox Code Playgroud)

这将使 vite 绑定到 0.0.0.0 并接受来自容器外部的连接。