首页 > 解决方案 > 在 docker 中附加卷后找不到模块

问题描述

这是我的码头文件

FROM node:15
# sets the folder structure to /app directory
WORKDIR /app
# copy package.json to /app folder
COPY package.json .
RUN npm install
# Copy all files from current directory to current directory in docker(app)
COPY . ./
EXPOSE 3000
CMD ["node","index.js"]

我在我的 powershell 中使用此命令在容器中运行图像

docker run -v ${pwd}:/app -p 3000:3000 -d --name node-app node-app-image

${pwd} 返回当前目录。但是,一旦我按 Enter 键,不知何故 node_modules 没有安装在容器中,并且我在日志中收到“express not found”错误。[![Docker log][1]][1] 我无法验证是否未安装 node_modules,因为我无法启动容器来运行exec --it命令。


我正在关注一个 freecodecamp 教程,它似乎在他的电脑上工作,我也在命令提示符下尝试了这个命令,将 ${pwd} 替换为 %cd%。


在我在命令中添加音量标志之前,这曾经可以正常工作。[1]:https ://i.stack.imgur.com/4Fifu.png

标签: dockerexpressdockerfiledocker-volumedocker-for-windows

解决方案


您的问题是您在某处构建图像,然后尝试将另一个文件夹映射到它。

|_MyFolder/
  |_ all-required-files
  |_ all-required-folders
  |_ Dockerfile

docker build -t node-app-image .

docker run -p 3000:3000 -d --name node-app node-app-image

简化的 Dockerfile

FROM node:15
# sets the folder structure to /app directory
WORKDIR /app

# Copy all files from current directory to current directory in docker(app)
COPY . ./

RUN npm install

EXPOSE 3000
CMD ["node","index.js"]

推荐阅读