我创建了一个名为simpleWeb的node.js项目。该项目包含package.json和index.js两个文件。
index.js
const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('How are you doing');
});
app.listen(8080, () => {
console.log('Listening on port 8080');
});
包描述文件
{
"dependencies": {
"express": "*"
},
"scripts": {
"start": "node index.js"
}
}
我还创建了一个Dockerfile来为我的node.js项目创建docker镜像。
Dockerfile
# Specify a base image
FROM node:alpine
# Install some dependencies
COPY ./ ./
RUN npm install
# Default command
CMD ["npm", "start"]
在尝试使用“docker build .”命令构建Docker镜像时,它会抛出以下错误。 错误日志simpleweb » docker build . ~/Desktop/jaypal/Docker and Kubernatise/simpleweb
[+] Building 16.9s (8/8) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 37B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/node:alpine 8.7s
=> [auth] library/node:pull token for registry-1.docker.io 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 418B 0.0s
=> [1/3] FROM docker.io/library/node:alpine@sha256:5b91260f78485bfd4a1614f1afa9afd59920e4c35047ed1c2b8cde4f239dd79b 0.0s
=> CACHED [2/3] COPY ./ ./ 0.0s
=> ERROR [3/3] RUN npm install 8.0s
------
> [3/3] RUN npm install:
#8 7.958 npm ERR! Tracker "idealTree" already exists
#8 7.969
#8 7.970 npm ERR! A complete log of this run can be found in:
#8 7.970 npm ERR! **/root/.npm/_logs/2020-12-24T16_48_44_443Z-debug.log**
------
executor failed running [/bin/sh -c npm install]: exit code: 1
上面的日志文件提供了一个路径 "/root/.npm/_logs/2020-12-24T16_48_44_443Z-debug.log",我可以在其中找到完整的日志记录。
但是,这个文件在我的本地机器上不存在。
我不明白问题出在哪里。
WORKDIR
。如果你不想在 Dockerfile 中提及WORKDIR
,请使用 Node 版本 <= 14。 - Ravi Singhdocker run -it node:alpine sh
来启动容器,这将在图像node:alpine
之外为你提供一个正在运行的容器内的Shell。然后,在该Shell中执行npm install
,这将导致相同的错误,并最终访问前面提到的日志文件。 - Geralt