Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有Postgres postgis扩展的Heroku CI_Heroku_Postgis_Heroku Postgres_Heroku Ci - Fatal编程技术网

带有Postgres postgis扩展的Heroku CI

带有Postgres postgis扩展的Heroku CI,heroku,postgis,heroku-postgres,heroku-ci,Heroku,Postgis,Heroku Postgres,Heroku Ci,我正在对Heroku上的数据库使用postgis扩展。在生产中,这一切都很好;我像个老板一样在测绘 但是,我无法让我的应用程序在HerokuCI上构建,因为测试环境中的数据库插件没有安装GDAL(postgis扩展的一部分): 我不知道如何在heroku CI环境中创建扩展。不要说如何在测试数据库上创建扩展 我知道我不能在dyno数据库中使用CI,但我没有在dyno one中使用,我使用的是计划 以下是我的应用程序架构: { "name": "mymegaapp", "scripts":

我正在对Heroku上的数据库使用
postgis
扩展。在生产中,这一切都很好;我像个老板一样在测绘

但是,我无法让我的应用程序在HerokuCI上构建,因为测试环境中的数据库插件没有安装GDAL(postgis扩展的一部分):

我不知道如何在heroku CI环境中创建扩展。不要说如何在测试数据库上创建扩展

我知道我不能在dyno数据库中使用CI,但我没有在dyno one中使用,我使用的是计划

以下是我的应用程序架构:

{
  "name": "mymegaapp",
  "scripts": {
    "heroku-prebuild": "create extension postgis",
    "heroku-postbuild": "echo heroku-postbuild script runs here."
  },
  "env": {
  },
  "formation": {
  },
  "addons": [
  ],
  "buildpacks": [
    {
      "url": "heroku/python"
    },
    {
      "url": "heroku/nodejs"
    }
  ],
  "environments": {
    "test": {
      "scripts": {
        "test": "python manage.py migrate --noinput && python manage.py test"
      },
      "env": {
        "DJANGO_DEBUG": "1"
      },
      "addons":[
        {
          "plan": "heroku-postgresql",
          "options": {
            "version": "11"
          }
        },
        "heroku-redis:hobby-dev"
      ]
    }
  }
}
请注意,我已经尝试在预构建脚本中创建postgis扩展,这没有什么区别

我还尝试在测试脚本之前调用创建:

      "scripts": {
        "test": "heroku create extension postgis && python manage.py migrate --noinput && python manage.py test"
      },
这不起作用,因为dyno中没有安装heroku cli

关键问题:

  • 如何在HerokuCI中创建扩展
  • postgis在HerokuCI中是允许的扩展吗

  • 你几乎成功了。直接从CLI创建pg扩展没有一流的支持。但是,您可以将语句传递到
    psql

    在postdeploy或测试设置脚本中尝试以下操作:
    psql-c“create extension postgis”$DATABASE\u URL
    正如您所知,您需要使用真实的数据库,而不是dyno。如果已将数据库附加为
    数据库\u URL
    以外的内容,则需要在脚本中更新该内容

    [通过OP编辑以添加有用信息]在这种情况下,还需要GDAL库,可以通过将
    BUILD\u WITH\u GEO\u libraries
    环境变量设置为
    1
    来安装GDAL库。app.json中的最终工作解决方案是:

      "environments": {
        "test": {
          "scripts": {
            "postdeploy": "psql -c \"create extension postgis\" $DATABASE_URL",
            "test": "python manage.py migrate --noinput && python manage.py test"
          },
          "env": {
            "DJANGO_DEBUG": "1",
            "BUILD_WITH_GEO_LIBRARIES": "1"
          },
          "addons":[
            {
              "plan": "heroku-postgresql",
              "options": {
                "version": "11"
              }
            }
          ]
        }
      }
    

    Heroku现在不推荐使用2021年的更新作为设置BUILD_WITH_GEO_库,并且不支持该更新:

    此app.json适用于Django/Heroku的CI设置:

    {
      "buildpacks": [
        {
          "url": "https://github.com/heroku/heroku-geo-buildpack.git"
        },
        {
          "url": "heroku/python"
        }
      ],
      "environments": {
        "test": {
          "scripts": {
            "test": "python3 manage.py migrate --noinput && python3 manage.py test --keepdb"
          },
          "env": {
            "DJANGO_DEBUG": "1"
          }
        }
      }
    }
    

    真有趣。几年后,我拿起了同一个应用程序,当你打字的时候,我正在做一个通宵的工作,让它部署到一个演示中,这是因为DockRise和部署到GCloud花费了很长时间!(我对heroku buildpacks的片状物感到厌烦)。不过,感谢您的更新!:)
    {
      "buildpacks": [
        {
          "url": "https://github.com/heroku/heroku-geo-buildpack.git"
        },
        {
          "url": "heroku/python"
        }
      ],
      "environments": {
        "test": {
          "scripts": {
            "test": "python3 manage.py migrate --noinput && python3 manage.py test --keepdb"
          },
          "env": {
            "DJANGO_DEBUG": "1"
          }
        }
      }
    }