我有一个基于 Facebook 的 React 应用程序create-react-app。在开发过程中,我在特定的本地端口 (60001) 上运行它。为了实现这一点,我将package.json部分中的默认start脚本更改为以下内容:scripts
"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这个容器时,我只看到react脚本输出确认我的应用程序已编译。