无法在Docker表单中运行React应用程序[重复]

d8tt03nd  于 2024-01-06  发布在  Docker
关注(0)|答案(2)|浏览(181)

此问题在此处已有答案

running a vite dev server inside a docker container(3个答案)
14天前关闭
我有一个小的React应用程序memegenerator应用程序,它在本地设置中运行不正常,没有任何Docker。gitlink:https://github.com/ajahi/memegenerator.git应用程序结构是这样的。

  1. -dist
  2. -assets
  3. -index.html
  4. -vite.svg
  5. -Dockerfile
  6. -index.html
  7. -node_modules
  8. -package,json
  9. -public
  10. -vite.svg
  11. -src
  12. -App.jsx
  13. -assets
  14. -components
  15. -index.css
  16. -main.jsx
  17. -vite.config.js

字符串
package.json是这样的:

  1. {
  2. "name": "meme-generator",
  3. "private": true,
  4. "version": "0.0.0",
  5. "type": "module",
  6. "scripts": {
  7. "dev": "vite --port=3000",
  8. "build": "vite build",
  9. "lint": "eslint src --ext js,jsx --report-unused-disable-directives --max-warnings 0",
  10. "preview": "vite preview"
  11. },
  12. "dependencies": {
  13. "html2canvas": "^1.4.1",
  14. "react": "^18.2.0",
  15. "react-dom": "^18.2.0",
  16. "use-react-screenshot": "^3.0.0"
  17. },
  18. "devDependencies": {
  19. "@types/react": "^18.0.37",
  20. "@types/react-dom": "^18.0.11",
  21. "@vitejs/plugin-react": "^4.0.0",
  22. "eslint": "^8.38.0",
  23. "eslint-plugin-react": "^7.32.2",
  24. "eslint-plugin-react-hooks": "^4.6.0",
  25. "eslint-plugin-react-refresh": "^0.3.4",
  26. "vite": "^4.3.9"
  27. }
  28. }


Dockerfile如下:

  1. FROM node:18-alpine as builder
  2. WORKDIR memegen
  3. COPY ./ ./
  4. #run npm install
  5. RUN npm install --force
  6. EXPOSE 3000
  7. #cmd
  8. CMD ["npm","run","dev"]


在本地示例中,在我安装节点模块后,“npm install”然后“npm run dev”.应用程序在localhost中运行:3000.我试图重新创建我在docker容器中的本地设置中运行的相同步骤.要做到这一点,我遵循这些步骤,在根目录:

  1. docker build -t imagegene . //使用给定的Dockerfile创建image。
  2. docker run -p 3000:3000 imagegene
  1. Response i get is:
  2. [email protected] dev
  3. vite --port=3000
  4. VITE v4.3.9 ready in 546 ms
  5. Local: http://localhost:3000/
  6. Network: use --host to expose


但是当我后藤localhost:3000的时候我什么都没有得到。x1c 0d1x

evrscar2

evrscar21#

默认情况下,Vite绑定到localhost,这意味着它只接受来自本地机器的连接。在Docker上下文中,本地机器就是容器本身。因此Vite不接受来自容器外部的连接。
要修复它,需要将--host添加到package.json文件中的dev脚本中定义的vite命令中。
现在看起来是这样的

  1. "scripts": {
  2. "dev": "vite --port=3000",
  3. "build": "vite build",

字符串
将其更改为

  1. "scripts": {
  2. "dev": "vite --port=3000 --host",
  3. "build": "vite build",


并且它应该开始接受来自容器外部的连接。
作为一个说明,Vite实际上是想告诉你,你可能需要这样做。如果你看你的应用程序启动的消息,它说Network: use --host to expose。这可以更好地制定,我认为,因为每个人都可能不知道'暴露'在这种情况下意味着什么。

展开查看全部
qncylg1j

qncylg1j2#

您的docker容器在“localhost”上无法访问。您需要找到您的容器的IP,并将localhost替换为它的IP。您可以使用此命令来获取IP:

  1. docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id

字符串

相关问题