此问题在此处已有答案:
running a vite dev server inside a docker container(3个答案)
14天前关闭
我有一个小的React应用程序memegenerator应用程序,它在本地设置中运行不正常,没有任何Docker。gitlink:https://github.com/ajahi/memegenerator.git应用程序结构是这样的。
-dist
-assets
-index.html
-vite.svg
-Dockerfile
-index.html
-node_modules
-package,json
-public
-vite.svg
-src
-App.jsx
-assets
-components
-index.css
-main.jsx
-vite.config.js
字符串
package.json是这样的:
{
"name": "meme-generator",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite --port=3000",
"build": "vite build",
"lint": "eslint src --ext js,jsx --report-unused-disable-directives --max-warnings 0",
"preview": "vite preview"
},
"dependencies": {
"html2canvas": "^1.4.1",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"use-react-screenshot": "^3.0.0"
},
"devDependencies": {
"@types/react": "^18.0.37",
"@types/react-dom": "^18.0.11",
"@vitejs/plugin-react": "^4.0.0",
"eslint": "^8.38.0",
"eslint-plugin-react": "^7.32.2",
"eslint-plugin-react-hooks": "^4.6.0",
"eslint-plugin-react-refresh": "^0.3.4",
"vite": "^4.3.9"
}
}
型
Dockerfile如下:
FROM node:18-alpine as builder
WORKDIR memegen
COPY ./ ./
#run npm install
RUN npm install --force
EXPOSE 3000
#cmd
CMD ["npm","run","dev"]
型
在本地示例中,在我安装节点模块后,“npm install”然后“npm run dev”.应用程序在localhost中运行:3000.我试图重新创建我在docker容器中的本地设置中运行的相同步骤.要做到这一点,我遵循这些步骤,在根目录:
- docker build -t imagegene . //使用给定的Dockerfile创建image。
- docker run -p 3000:3000 imagegene
Response i get is:
[email protected] dev
vite --port=3000
VITE v4.3.9 ready in 546 ms
➜ Local: http://localhost:3000/
➜ Network: use --host to expose
型
但是当我后藤localhost:3000的时候我什么都没有得到。x1c 0d1x
2条答案
按热度按时间evrscar21#
默认情况下,Vite绑定到localhost,这意味着它只接受来自本地机器的连接。在Docker上下文中,本地机器就是容器本身。因此Vite不接受来自容器外部的连接。
要修复它,需要将
--host
添加到package.json
文件中的dev
脚本中定义的vite
命令中。现在看起来是这样的
字符串
将其更改为
型
并且它应该开始接受来自容器外部的连接。
作为一个说明,Vite实际上是想告诉你,你可能需要这样做。如果你看你的应用程序启动的消息,它说
Network: use --host to expose
。这可以更好地制定,我认为,因为每个人都可能不知道'暴露'在这种情况下意味着什么。qncylg1j2#
您的docker容器在“localhost”上无法访问。您需要找到您的容器的IP,并将localhost替换为它的IP。您可以使用此命令来获取IP:
字符串