【发布时间】:2020-07-19 18:27:48
【问题描述】:
这是我的 Dockerfile,它位于 nodejs 应用程序的根目录。
# Build from LTS version of node (version 12)
FROM node:12
# Create app directory
RUN mkdir -p /usr/src/app
# Define app diretory inside image
WORKDIR /usr/src/app
# package.json AND package-lock.json are copied where available
COPY package*.json /usr/src/app/
# install modules
RUN npm install
# Bundle app source
COPY . /usr/src/app
# Bind app to port 3000
EXPOSE 3000
# Command to run app
CMD [ "nodemon", "./bin/www" ]
这是我的docker-compose.yml 文件
version: '2'
services:
mongo:
container_name: mongo
image: 'mongo:3.4.1'
ports:
- "27017:27017"
backend-app:
container_name: school-backend
restart: always
build: ./server
ports:
- "3000:3000"
frontend-app:
container_name: angular-frontend
restart: always
build: ./angular-app
ports:
- "4200:4200"
我执行命令docker-compose up
然后我得到这个错误
school-backend | Error: Cannot find module '/usr/src/app/nodemon'
school-backend | at Function.Module._resolveFilename (internal/modules/cjs/loader.js:966:15)
school-backend | at Function.Module._load (internal/modules/cjs/loader.js:842:27)
school-backend | at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:71:12)
school-backend | at internal/main/run_main_module.js:17:47 {
school-backend | code: 'MODULE_NOT_FOUND',
school-backend | requireStack: []
school-backend | }
在 Dockerfile 中,我将package.json 复制到工作目录/usr/src/app\。
然后我执行npm install,它将安装nodemon,因为它在package.json 中声明
但是,为什么给定的模块不存在?
【问题讨论】:
-
一旦你构建了镜像,Node 源将永远不会改变;如果您更新图像,则需要删除并重新创建容器。所以运行
nodemon不会在这里添加任何东西,你可以直接运行node。
标签: node.js docker npm docker-compose dockerfile