我有一个简单的React应用程序,我想在能够在主机中编辑的同时,从Docker容器链接并提供服务。
镜像是从下面的Dockerfile构建的,但从未重建过,因为它的想法是测试挂载并自动查看更改。
FROM node:14.16.0-alpine3.13
RUN addgroup app && adduser -S -G app app
USER app
WORKDIR /app
COPY package*.json .
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
我使用以下命令运行容器:
docker run -d -p 5001:3000 -v "$(get-location):/app" --name=binded react-app
我可以证实;安装";发生这种情况是因为如果我对index.html进行一个小的更改,并在文件运行时使用并行的exec
命令从容器中检查文件,我就能看到更新的版本。
问题是,当我在浏览器中使用http://localhost:5001/
访问应用程序时,我没有得到最新版本。我从容器为run
的那一刻起就得到了版本,之后没有任何更改。如果我运行另一个容器,我将获得最新版本,但同样只到那个时间点,不会反映对文件的进一步更新。
顺便说一句,为了测试,我正在编辑<title>
标签,我自己也在刷新页面(而不是谈论热重新加载(。
那么,在容器中运行的服务器从哪里检索文件呢?我该怎么做才能始终从服务器上获得最新版本的应用程序?
我终于解决了。问题是,由于nodemon没有对装载文件中的任何更改做出反应,服务器没有自动重新启动。
解决方案是使用参数-L
运行nodemon
以启用旧版监视,然后按预期重新启动并进行更改。