【问题标题】:Heroku with Docker - ERROR H14:No web processes runningHeroku 与 Docker - 错误 H14:没有运行 Web 进程
【发布时间】:2021-04-28 17:02:49
【问题描述】:

我正在尝试通过 Heroku 上的 Docker 容器部署一个在 express 和 Pm2 中提供服务的简单 nodejs 应用程序。

按照heroku定义的步骤,容器被成功推送到heroku:

  1. heroku 容器:登录
  2. heroku 容器:push name-of-container -a name-of-herokuApp
  3. heroku 容器:发布容器名称-herokuApp 名称
  4. heroku ps:scale name-of-container=1 -a name-of-herokuApp

这里是 heroku 的日志,显示成功运行映像并为进程分配测功机 Container Deployment Log

问题来了:访问应用程序路由时抛出 Heroku H14 错误,当进程没有 Dynos 时会发生这种情况,在我的情况下它有。 Error H14 Log

我想不出这个错误的原因。我知道这可能是一个愚蠢的错误想 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 的新手,所以我可能在这里搞砸了 T-T?

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"]

【问题讨论】:

    标签: node.js docker express heroku pm2


    【解决方案1】:

    你做到了:

    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
    但这是一个不同的话题,是一个新问题。

    【讨论】:

    • 我刚才遇到了这个问题,这个解决方案(在'push'之后使用'web'而不是docker镜像名称)解决了我的问题。谢谢!
    猜你喜欢
    • 2012-04-15
    • 2017-06-07
    • 2015-09-22
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 2012-12-19
    • 2021-10-17
    相关资源
    最近更新 更多