1

我正在尝试在 Heroku 上配置评论应用程序。对于每个 PR,我想部署和构建 Dockerfile,然后运行我的迁移命令。

使用以下配置,Dockerfile 部署良好,应用程序似乎按预期工作。

Dockerfile:

FROM hasura/graphql-engine:v1.0.0-beta.4
ENV HASURA_GRAPHQL_ENABLE_CONSOLE=true
CMD graphql-engine \
    --database-url $DATABASE_URL \
    serve \
    --server-port $PORT

heroku.yml

build:
  docker:
    web: Dockerfile

应用程序.json

{
  "name": "my_project",
  "formation": {
    "web": {
      "quantity": 1,
      "size": "free"
    }
  },
  "addons": [
    {
      "plan": "heroku-postgresql:hobby-dev",
      "options": { "version": "9.6" }
    }
  ],
  "scripts": {},
  "buildpacks": [],
  "stack": "container"
}

但是,当我添加(我认为是)迁移的发布脚本时,构建失败。

带有发布脚本的heroku.yml:

release:
  image: Dockerfile
  command:
    - cd ./migrations && ./hasura migrate apply --endpoint $(heroku info -s | grep web_url | cut -d= -f2)

这会导致构建错误:

=== Fetching app code...
=!= Couldn't find the release image configured for this app. Is there a matching run process?

我也尝试向 in 中的键添加一个键release,但这似乎没有任何作用。scriptsapp.json

4

1 回答 1

2

image参数不应是 Dockerfile 的名称。它应该是您构建的另一个图像。

在您的情况下,您只有一个:

web: Dockerfile

所以你需要像这样指定你的发布过程类型:

release:
  image: web
  command:
    - cd ./migrations && ./hasura migrate apply --endpoint $(heroku info -s | grep web_url | cut -d= -f2)

为您提供完整的 heroku.yml,如下所示:

build:
  docker:
    web: Dockerfile
release:
  image: web
  command:
    - cd ./migrations && ./hasura migrate apply --endpoint $(heroku info -s | grep web_url | cut -d= -f2)

有关更多信息,您可以查看 Heroku 官方文档:https ://devcenter.heroku.com/articles/build-docker-images-heroku-yml#release-configuring-release-phase

于 2019-09-12T09:50:29.253 回答