node.js - 出现错误:运行 docker-compose 时找不到 nodemon
问题描述
我已经对 node.js 应用程序进行了 docker 化,并创建了一个 docker-compose 文件来与 mongo 一起运行它。我正在使用 docker 进行开发,因此我需要 nodemon。
这是我的 Dockerfile:
FROM node:carbon-alpine
RUN mkdir -p usr/src/app
WORKDIR /usr/src/app
RUN npm install -g nodemon
COPY package*.json /usr/src/app
RUN yarn install
COPY . /usr/src/app
EXPOSE 3000
CMD [ "yarn", "start-local" ]
这是 docker-compose
version: "3"
services:
app:
container_name: app
restart: always
build: .
volumes:
- .:/usr/src/app
environment:
- MONGO_URI=mongodb://mongo:27017/test
ports:
- "3000:3000"
depends_on:
- mongo
networks:
app_net:
mongo:
container_name: app-mongo
image: mongo:3.6.6-jessie
volumes:
- ./data:/data/db
networks:
app_net:
aliases:
- mongo
networks:
app_net:
当我运行时docker-compose up
出现错误/bin/sh: nodemon: not found
。当我在没有一切的情况下运行单个容器时,compose
一切正常。有什么问题docker-compose definition
?
解决方案
我认为您的问题可能是您的主机上没有安装 node_modules 。因此,当您通过 docker-compose 卷映射主机和容器文件系统时,您的主机会覆盖容器的 node_modules 文件夹。
为了避免您应该忽略该文件夹,如下所示:
version: "3"
services:
app:
container_name: app
restart: always
build: .
volumes:
- .:/usr/src/app
- /usr/src/app/node_modules/
environment:
- MONGO_URI=mongodb://mongo:27017/test
ports:
- "3000:3000"
depends_on:
- mongo
networks:
app_net:
mongo:
container_name: app-mongo
image: mongo:3.6.6-jessie
volumes:
- ./data:/data/db
networks:
app_net:
aliases:
- mongo
networks:
app_net:
希望能帮助到你 :)
推荐阅读
- java - 在本地网络上查找服务器 IP 地址
- python - 为什么 find_objects 会给出一堆无,然后是整个图像的范围?
- excel - 如何替换公式中的“S”以便能够有一个变量而不是这个字母 S?
- node.js - 我可以让 postgres 使用 typeorm 为成对的对象自动生成 id 吗?
- docker - 是否可以在使用后放弃对卷所做的所有更改?
- javascript - React 根据其他下拉列表中的选定值更改下拉列表的值
- python - 利用 Google Cloud Compute Engine V 上的所有 CPU;
- firebase - 如果在 Firebase 规则中?
- python - cross_val_score 不适合实际的输入模型吗?
- node.js - 如果一条消息被删除,则发送另一个消息 Discord.js