Asi*_*zza 4 node.js docker nodemon docker-compose
我正在尝试使用NodeJs 和 MongoDB 这两个服务在 Docker 网络中运行Nodemon 包。
当我使用npm start运行应用程序时,nodemon 工作:我可以连接到localhost:3000并且实时更改。但是,一旦我运行npm run docker (docker-compose up --build),我就可以连接到 localhost:3000,但我无法在应用程序或控制台上看到实时更改。
docker-compose.yml
version: '3.7'
services:
app:
container_name: NodeJs
build: .
volumes:
- "./app:/usr/src/app/app"
ports:
- 3000:3000
mongo_db:
container_name: MongoDB
image: mongo
volumes:
- mongo_db:/data/db
ports:
- 27017:27017
volumes:
mongo_db:
Run Code Online (Sandbox Code Playgroud)
docker文件
FROM node:alpine
WORKDIR /app
COPY package.json /.
RUN npm install
COPY . /app
CMD ["npm", "run", "dev"]
Run Code Online (Sandbox Code Playgroud)
包.json
{
"name": "projectvintedapi",
"version": "0.0.0",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node index.js",
"dev": "nodemon index.js",
"docker": "docker-compose up --build"
},
"license": "ISC",
"dependencies": {
"dotenv": "^16.0.0",
"express": "^4.17.3",
"mongodb": "^4.5.0",
"nodemon": "^2.0.15"
}
}
Run Code Online (Sandbox Code Playgroud)
docker-compose.yml告诉 Docker 启动一个容器,即 Node.js 应用程序。它还告诉 Docker 挂载主机卷:
volumes:\n - "./app:/usr/src/app/app"\nRun Code Online (Sandbox Code Playgroud)\n因此,Docker 会将笔记本电脑上包含代码的 ./app 目录挂载到位于 /usr/src/app/app 的容器中。
\n一旦您在笔记本电脑/台式机上更改了代码,nodemon 就会检测到该更改并重新启动进程,而无需重建容器。为了实现这一点,您需要告诉 Docker 将入口点设置为 nodemon。在 Dockerfile 中执行此操作:
\nFROM node:alpine\nWORKDIR /app\nCOPY . /app\n\nRUN npm install -g nodemon\nRUN npm install\n\n#Give the path of your endpoint\nENTRYPOINT ["nodemon", "/usr/src/app/server.js"] \nCMD ["npm", "run", "dev"]\nRun Code Online (Sandbox Code Playgroud)\n借助主机卷和 Nodemon,您的代码同步几乎是即时的。
\n| 归档时间: |
|
| 查看次数: |
8128 次 |
| 最近记录: |