Emm*_*cio 2 heroku node.js express docker pm2
我正在尝试通过 Heroku 上的 Docker 容器部署一个在express和Pm2中提供服务的简单nodejs应用程序。
按照heroku定义的步骤,容器成功推送到heroku:
这是heroku 的日志,显示了运行图像并将dyno 分配给进程的成功 容器部署日志
问题来了:在访问应用程序路由时,会抛出 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)
Run Code Online (Sandbox Code Playgroud)
及其与 Pm2 一起运行:
"scripts": {
"dev": "nodemon ./src/app",
"start": "pm2-runtime ./src/app.js --watch --name WD-Bot"
},
Run Code Online (Sandbox Code Playgroud)
另外,这里还有我的 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"]
Run Code Online (Sandbox Code Playgroud)
你做了:
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
Run Code Online (Sandbox Code Playgroud)
您命名了您的流程wd-bot,而不是web。
将进程类型更改为后,web您还必须正确绑定$PORT。请参阅: https: //help.heroku.com/P1AVPANS/why-is-my-node-js-app-crashing-with-an-r10-error
但这是一个不同的主题,并且是一个新问题。
| 归档时间: |
|
| 查看次数: |
1245 次 |
| 最近记录: |