我正在尝试通过terraform将一个容器化的nextJS应用程序部署到Heroku。
我可以使用以下容器成功地部署,而无需使用:
provider "heroku" {
email = var.HEROKU_EMAIL
}
resource "heroku_app" "app" {
name = var.app_name
region = "eu"
}
resource "heroku_build" "nextjs" {
app = heroku_app.app.id
buildpacks = ["https://github.com/heroku/heroku-buildpack-nodejs"]
source = {
path = "./app"
}
}
resource "heroku_formation" "app" {
app = heroku_app.app.id
type= "web"
quantity = 1
size = "Free"
depends_on = [heroku_app.app]
}查看terraform文档,我似乎可以用以下方式将Heroku堆栈设置为container:
resource "heroku_app" "app" {
name = var.app_name
region = "eu"
stack = "container"
}我创建了一个简单的heroku.yml
build:
docker:
web: Dockerfile
run:
web: npm build && npm start然而,目前还不清楚heroku_build中的“源代码”应该是什么,目前我得到的是:
Error: error retrieving formation: Get https://api.heroku.com/apps/<app-name>/formation/xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx: Couldn't find that app.这个github问题有一个相关的问题,但它对我的理解没有多大帮助
发布于 2020-09-04 20:56:33
您需要一个Dockerfile,告诉Heroku如何构建Docker映像:
FROM node:12
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
CMD [ "node", "server.js" ]然后,对于heroku_build:
resource "heroku_build" "this" {
app = heroku_app.this.name
source = {
path = "."
}
}这样,您将“推送”当前文件夹(.)对于Heroku,它将找到heroku.yml并创建Docker映像。
https://stackoverflow.com/questions/62305364
复制相似问题