【发布时间】:2020-06-23 06:25:29
【问题描述】:
我在 docker 容器中运行我的 node.js 应用程序,并且 nodemon 不会在更改时重新加载。 这是我的 dockerfile:
WORKDIR /app
COPY package*.json ./
RUN yarn install
COPY . /app
EXPOSE 8080
CMD ["yarn", "dev"]
我正在使用以下命令构建图像:
docker image build -t test7 .
然后运行它:
docker run -it -v "$(pwd)/app:/app/target_dir" test7 bash
我在容器内做yarn dev,它启动服务器一次,但没有重新加载。
这是 package.json 文件:
"name": "self-learning",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"scripts": {
"start": "node index.js",
"dev": "nodemon --legacy-watch index.js"
},
"dependencies": {
"cors": "^2.8.5",
"express": "^4.17.1",
"express-winston": "^4.0.3",
"multer": "^1.4.2",
"nodemon": "^2.0.2",
"pg": "^7.18.2",
"winston": "^3.2.1"
}
}
有什么办法可以解决吗?如何在不重建容器的情况下查看更改?
【问题讨论】:
-
在容器中手动重启进程是否有效?
-
容器中index.js的完整路径是什么?与 index.js 位于同一文件夹中的所有与 Node.js 脚本相关的内容,还是有任何“外部”文件?
-
如果你只是在你的主机上运行
yarn dev,在 Docker 之外,它可以工作吗?您希望在容器中工作的环境中缺少什么? -
@DanieleMolinari index.js 位于主文件夹(与 package.json 相同的文件夹)
-
是的,本地 docker 容器外一切正常