node.js - Heroku 与 Docker - 错误 H14:没有运行 Web 进程
问题描述
我正在尝试通过 Heroku 上的 Docker 容器部署在 express 和 Pm2 中提供的简单 nodejs 应用程序。
按照heroku定义的步骤,容器被成功推送到heroku:
- heroku 容器:登录
- heroku 容器:push name-of-container -a name-of-herokuApp
- heroku 容器:释放容器名称-herokuApp 名称
- heroku ps:scale name-of-container=1 -a name-of-herokuApp
这是 heroku 的日志,显示了运行映像并为进程分配 dyno 的成功 Container Deployment Log
这是问题出现的时候:在访问应用程序路由时,会抛出 Heroku H14 错误,当进程没有 Dynos 时会发生这种情况,在我的情况下它有。 错误 H14 日志
我没有想法作为此错误引发的原因。我知道这可能是一个愚蠢的错误想 XD !
在这里你得到了我的应用程序的代码:
const express = require('express')
const app = express()
//require('./database')
app.use(express.json())
app.use(express.urlencoded({ extended: false }))
console.log('App is Running, yaaaay')
app.get("/", (req,res) => {
res.send("OK")
})
app.listen(3000)
并与 Pm2 一起运行:
"scripts": {
"dev": "nodemon ./src/app",
"start": "pm2-runtime ./src/app.js --watch --name WD-Bot"
},
另外,这里有我的 DockerFile。我是 Docker 的新手,所以我可能在这里搞砸了 TT?
FROM node:12.18-alpine
ENV NODE_ENV=production
WORKDIR /usr/src/app
COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"]
RUN npm install
COPY . .
EXPOSE 3000
CMD ["npm", "start"]
解决方案
你做了:
heroku container:push name-of-container -a name-of-herokuApp
您假设这是容器的名称。那是错误的。根据https://devcenter.heroku.com/articles/container-registry-and-runtime#build-an-image-and-push这是流程类型:
heroku container:push <process-type>
您收到的错误消息是:
ERROR H14:No web processes running
您命名了您的过程wd-bot
,而不是web
.
将您的流程类型更改为之后,web
您还必须正确绑定$PORT
。请参阅:https
://help.heroku.com/P1AVPANS/why-is-my-node-js-app-crashing-with-an-r10-error
但这是一个不同的主题,是一个新问题。
推荐阅读
- django - 如何使用 djangofilterbackend 显示 http 404?
- c# - 如何使 API 操作在 GlobalAsax 中命中 Application_Error()
- c# - HoloLens 中的 QR 扫描 - DLL 错误
- rust - 如何根据 Rocket 服务器的状态以不同的值响应?
- c++ - 在 main.cpp 中实现 MainWindow 时缺少 vtable
- regex - 忽略两个单词之间的换行符
- javascript - Laravel Mix 突然停止编译 SCSS 并写入空文件
- python - pandas 从一个数据帧中检索值并在另一个数据帧上进行计算
- python - 将新值分配给 numpy 数组的问题
- swift - swift:mailcomposeviewcontroller 不会关闭