【发布时间】:2020-02-13 13:51:09
【问题描述】:
我有一个基于 Facebook 的 create-react-app 的 React 应用程序。在开发过程中,我在特定的本地端口(60001)上运行它。为此,我将 package.json 的 scripts 部分中的默认 start 脚本更改为以下内容:
"start": "set PORT=60001 && react-scripts start",
我现在需要在使用相同端口的 Docker 容器中运行它。在我的 Dockerfile 中,我有这两个阶段:
FROM node:alpine as build
COPY ./package.json /app/package.json
WORKDIR /app
RUN npm install
RUN rm -f .npmrc
FROM build as build-dev
COPY ./public/ /app/public
COPY ./src/ /app/src
EXPOSE 60001
CMD ["npm", "start"]
请注意,我正在公开我希望 npm 开发服务器绑定到的容器上的端口。
我按照你的期望构建了镜像,目标是上面的build-dev Docker 阶段。
docker build --target build-dev -t my-app:local
然后我像这样运行容器:
docker run -it -p 60001:60001 my-app:local
当我希望我的开发应用程序构建运行时,我的目的是将我的本地端口 60001 绑定到容器上的同一端口。
当我这样做时,我看到确认 npm 正在运行正确的脚本并且应用程序已编译。但是,浏览到http://localhost:60001/ 什么也没给我。只是一个ERR_CONNECTION_REFUSED,好像那里什么都没有。
我看不出我在这里做错了什么。有任何想法吗?我希望我能够从容器日志中获得一些见解,但是当我为此容器运行 docker logs 时,我只看到反应脚本输出确认我的应用程序已编译。
【问题讨论】: