kubernetes 停靠 NodeJS 项目正在获取:“命令失败信号SIGTERM”错误

sr4lhrrt  于 2022-11-02  发布在  Kubernetes
关注(0)|答案(2)|浏览(135)

我有一个Express应用程序,我在Kubernetes集群中使用了该应用程序。
这个应用程序是我的微服务架构研究的认证服务。
我使用Skaffold dev命令为这个应用程序应用Kubernetes。
我的Dockerfile是这样的:

FROM node:alpine

WORKDIR /app
COPY package.json .
RUN npm install

COPY . .

CMD ["npm", "start"]

我用“Scaffold dev”命令运行它
我得到这样的错误:

...
...    
Deployments stabilized in 3.752 seconds
Watching for changes...
[auth] npm notice 
[auth] npm notice New patch version of npm available! 7.5.1 -> 7.5.4
[auth] npm notice Changelog: <https://github.com/npm/cli/releases/tag/v7.5.4>
[auth] npm notice Run `npm install -g npm@7.5.4` to update!
[auth] npm notice 
[auth] npm ERR! path /app
[auth] npm ERR! command failed
[auth] npm ERR! signal SIGTERM
[auth] npm ERR! command sh -c node server.js
[auth] 
[auth] npm ERR! A complete log of this run can be found in:
[auth] npm ERR!     /root/.npm/_logs/2021-02-19T16_46_28_956Z-debug.log

还有我的package.json文件:

{
  "name": "authservice",
  "version": "1.0.0",
  "description": "Auth Service",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "node server.js"
  },
  "keywords": [
    "auth",
    "user"
  ],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "bcrypt": "^5.0.0",
    "body-parser": "^1.19.0",
    "dotenv": "^8.2.0",
    "express": "^4.17.1",
    "express-rate-limit": "^5.2.3",
    "jsonwebtoken": "^8.5.1",
    "mongoose": "5.10.19",
    "morgan": "^1.10.0",
    "multer": "^1.4.2"
  },
  "devDependencies": {
    "nodemon": "^2.0.6"
  }
}

如何解决此错误?

yruzcnhs

yruzcnhs1#

我假设您在package.json中错误地指定了您的脚本,或者您的脚本不是server.js
对你的问题进行最小程度的重复是有效的:
使用Node.JS入门指南中的示例,并做一个小调整:https://nodejs.org/en/docs/guides/getting-started-guide/

注意const hostname = '127.0.0.1';更改为const hostname = '0.0.0.0';这是从主机访问容器化应用程序所必需的。

添加一个package.json,因为您有一个package.json,并且要显示npm start
package.json

{
    "name": "66281738",
    "version": "0.0.1",
    "scripts": {
        "start": "node app.js"
    }
}

注意我认为npm start默认为"start": "node server.js"

使用您的Dockerfile和:

QUESTION="66281738"
docker build --tag=${QUESTION} --file=./Dockerfile .
docker run --interactive --tty --publish=7777:3000 ${QUESTION}

产量:

> 66281738@0.0.1 start
> node app.js

Server running at http://0.0.0.0:3000/

注意docker run将容器的:3000端口绑定到主机的:7777,只是为了表明这些端口不需要相同。

然后道:

curl --request GET http://localhost:3000/

产量:

Hello World
inn6fuwd

inn6fuwd2#

遇到类似问题。请检查活动探测和就绪探测路径。

相关问题