Dockerfile 运行 在容器上下文中不会 运行
Dockerfile RUN doesn't to run in container context
我在尝试为我的 nodejs 应用程序生成 dockerfile 时遇到问题:
我的 docker 文件:
FROM node
WORKDIR /app
COPY . /app
RUN npm install
EXPOSE 3000
CMD ["node", "/app/index.js"]
nodejs(作为 npm 安装的一部分)需要 grpc。当我尝试 运行 我的应用程序时,我收到以下错误消息:
Cannot find module '/app/node_modules/grpc/src/node/extension_binary/node-v57-linux-x64/grpc_node.node'
当我浏览 app/node_modules/grpc/src/node/extension_binary/
文件夹时,node-v48-win32-x64
是其中唯一的文件夹。我的猜测是当 npm install
运行 时,它使用了我的主机检测到的上下文 windows/x64 并下载了那个二进制文件。我想在 运行 时间避免 运行ning npm install
。我该如何解决这个问题?
我的package.json:
{
"name": "microservice-test",
"version": "1.0.0",
"description": "A test microservice.",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "FrankerZ",
"license": "ISC",
"devDependencies": {
"grpcc": "0.0.8",
"gulp-livereload": "^3.8.1"
},
"dependencies": {
"async": "^2.5.0",
"grpc": "^1.6.0",
"gulp": "^3.9.1",
"gulp-run": "^1.7.1",
"gulp-util": "^3.0.8",
"protoc-plugin": "0.0.6"
}
}
我认为正在发生的事情是,docker 运行 正在从位于 COPY . /app
的容器内的项目中复制本地 node_modules
.
因此您得到 linux-x64 错误。它基本上将所有机器特定代码从 node_modules 复制到必须具有另一个 OS 的容器中。要解决此问题,请通过在 package.json
旁边创建一个 .dockerignore
文件并仅添加一行来忽略 node_modules。
node_modules
从 here 阅读更多相关信息。
我在尝试为我的 nodejs 应用程序生成 dockerfile 时遇到问题:
我的 docker 文件:
FROM node
WORKDIR /app
COPY . /app
RUN npm install
EXPOSE 3000
CMD ["node", "/app/index.js"]
nodejs(作为 npm 安装的一部分)需要 grpc。当我尝试 运行 我的应用程序时,我收到以下错误消息:
Cannot find module '/app/node_modules/grpc/src/node/extension_binary/node-v57-linux-x64/grpc_node.node'
当我浏览 app/node_modules/grpc/src/node/extension_binary/
文件夹时,node-v48-win32-x64
是其中唯一的文件夹。我的猜测是当 npm install
运行 时,它使用了我的主机检测到的上下文 windows/x64 并下载了那个二进制文件。我想在 运行 时间避免 运行ning npm install
。我该如何解决这个问题?
我的package.json:
{
"name": "microservice-test",
"version": "1.0.0",
"description": "A test microservice.",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "FrankerZ",
"license": "ISC",
"devDependencies": {
"grpcc": "0.0.8",
"gulp-livereload": "^3.8.1"
},
"dependencies": {
"async": "^2.5.0",
"grpc": "^1.6.0",
"gulp": "^3.9.1",
"gulp-run": "^1.7.1",
"gulp-util": "^3.0.8",
"protoc-plugin": "0.0.6"
}
}
我认为正在发生的事情是,docker 运行 正在从位于 COPY . /app
的容器内的项目中复制本地 node_modules
.
因此您得到 linux-x64 错误。它基本上将所有机器特定代码从 node_modules 复制到必须具有另一个 OS 的容器中。要解决此问题,请通过在 package.json
旁边创建一个 .dockerignore
文件并仅添加一行来忽略 node_modules。
node_modules
从 here 阅读更多相关信息。