docker - 在 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
解决方案
您的问题是您在某处构建图像,然后尝试将另一个文件夹映射到它。
|_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"]
推荐阅读
- bash - 在匹配字典中包含的值的模式后检索整个字典的脚本
- database - PowerBI (DAX) - Countif 包含列值(千行)
- javascript - 我想在 id=twork 中显示添加文本框 id=ttlpw 和 id=tplpw。但它不起作用
- java - 在没有运行 JBoss 实例的情况下使用 Weld 模拟类
- android - 如何将 java 客户端连接到在 android 中运行的 gRPC 服务器?
- .net - 如何使用已经转义的路径段指定新的 Uri 实例?
- stripe-payments - 更新订阅时的 SCA 身份验证
- optimization - 如何有效地优化折叠方法中的其他指标?
- java - 如何在 TestRunner 中从我的 Hooks 类中调用 @Before 方法?
- python - 如何让此代码对上面给出的名称进行计数和排序?(初学者)