【发布时间】:2023-04-06 17:20:02
【问题描述】:
我有一个 React.js 应用程序,我已经 dockerized 并且它工作正常,直到昨天出现某种错误,我发现是由于节点版本 17,所以我决定取回 docker 映像的节点版本到 16。一切都很好,但是自从我这样做后,我无法让 docker 映像在指定端口上运行。
这是我的 dockerfile:
ROM node:16.10-alpine as build
RUN mkdir /app
WORKDIR /app
COPY /front-end/dashboard/package.json /app
RUN npm install
COPY ./front-end/dashboard /app
RUN npm run build
# Install `serve` to run the application.
RUN npm install -g serve
# Set the command to start the node server.
CMD serve -s -n build
# Tell Docker about the port we'll run on.
EXPOSE 5000
如您所见,我正在制作一个构建,然后在端口 5000 上提供服务,但由于某种原因它不再工作并且它曾经工作正常。
我在 docker 中看到的所有输出是:
服务! │
││
│ - 本地:http://localhost:3000 │
│ - 在您的网络上:http://172.17.0.2:3000
当我转到 localhost:3000 时,什么都没有发生,这很好,但它应该在端口 5000 上工作并且它不会在那里运行。知道为什么我不能像以前那样在端口 5000 上运行 docker 映像的构建吗?
我使用 docker run -p 5000:5000 在端口 5000 上运行它,但这并不能解决问题。
【问题讨论】:
-
你不知道应该使用哪个端口服务,输出告诉你它正在使用 3000,所以你没有得到答案吗?
-
我提到它需要在端口 5000 上并且在 dockerfile 中我
EXPOSE它到端口 5000 但它不在端口 5000 上运行,这是我想要解决的问题。跨度> -
EXPOSE 5000只是元数据,你有什么配置吗?您是否阅读了服务文档以了解可能采用的形式? -
还不清楚如果你将任何端口暴露给你正在运行它的主机。
-
好吧,再一次,输出告诉你它实际上并没有在容器内的端口 3000 上运行,所以这不应该完全令人惊讶。这是自 v13 以来的默认设置:github.com/vercel/serve/commit/…。
标签: node.js reactjs docker npm dockerfile