在Heroku的审核应用程序中指定Postgres数据库计划

4
我想使用Heroku的审阅应用程序来测试和展示我的网站给我的同事。该网站有一个大型数据库,不能使用Heroku的免费hobby-dev数据库。
我正在尝试使用app.json清单文件来指定我的应用程序平台,根据指南要求进行操作。我正在使用以下代码: app.json
  {
    "name": "SiteName",
    "description": "The website for SiteName",
    "keywords": [
      "mezzanine",
      "django"
    ],
    "image": "heroku/python",
    "env": {
      "EMAIL_SYSTEM": {
        "description": "The email system to use, either console or mailgun",
        "value": "mailgun"
      },
      "ENVIRONMENT": {
        "description": "The dev environment, either production or test",
        "value": "production"
      },
      "ALLOWED_HOSTS": {
        "description": "Comma-separated list of hosts",
        "value": ".herokuapp.com"
      },
      "DEFAULT_FROM_EMAIL": "noreply@example.com",
      "SECRET_KEY": {
        "description": "A secret key for verifying the integrity of signed cookies.",
        "generator": "secret"
      },
      "WEB_CONCURRENCY": {
        "description": "The number of processes to run.",
        "value": "5"
      },
      "NODE_ENV": "production",
      "DEBUG": "False",
      "NPM_CONFIG_PRODUCTION": "false",
      "CELERY_REDIS_MAX_CONNECTIONS": 3,
      "S3_BUCKET": "my-s3-bucket",
      "USE_CELERY_TASKS": "True"
    },
    "formation": {
      "web": {
        "quantity": 1,
        "size": "Standard-1X"
      },
      "worker": {
        "quantity": 1,
        "size": "Standard-1X"
      }
    },
    "addons": [
      "heroku-redis",
      {
       "plan": "heroku-postgresql:standard-0",
        "as": "DATABASE"
      }
    ],
    "buildpacks": [
      {
        "url": "https://github.com/heroku/heroku-buildpack-python.git"
      }
    ],
    "scripts": {
      "postdeploy": "python manage.py migrate && python manage.py populate_db"
    },
    "environments": {
      "test": {
        "addons": [
          "heroku-postgresql:in-dyno",
          "heroku-redis:in-dyno"
        ],
        "env": {
          "APP_SKIP_DB_TEARDOWN": "True",
          "DB_REQUIRE_SSL": "False",
          "DEBUG": "True",
          "S3_BUCKET": "my-s3-bucket",
          "USE_CELERY_TASKS": "False"
        },
        "scripts": {
          "test-setup": "python manage.py collectstatic --noinput",
          "test": "python manage.py test"
        }
      }
    }
  }

这个可以顺利构建,但是我如何明确指定我想要使用的数据库计划呢?

1
尝试使用 {"plan": "heroku-postgresql:standard-0"} 而不是 as 键。 - Tin Nguyen
看起来没问题。当您启动审查应用程序时,您看到什么行为?错误的数据库层?还是出现了错误? - RangerRanger
@TinNguyen,我试过了,结果一样,只是一个业余级别的数据库。 - Pete Dermott
@RangerRanger:是的,有一张信用卡在文件中,账户里也有足够的钱。我尝试使用STANDARD_DB作为附件,但仍然创建了一个带有DATABASE作为附件值的爱好数据库。 - Pete Dermott
在这种情况下,您应该打开一个支持工单。那看起来肯定是正确的,也许他们的文档有问题? - RangerRanger
显示剩余2条评论
3个回答

11

如果有其他人遇到这个问题。

根据Heroku支持,他们已经改变了如何为审查和CI应用程序提供插件的方式,这意味着默认情况下,它们只会提供免费/最便宜的计划,而不管您的app.json中有什么。以下是一些详细信息和原因解释

如果您打开工单,他们可以在账户级别上覆盖此设置(截至撰写本文时,似乎尚未将其内置到他们的管理区域中)。


1

0

如果您无法像Pete's answer建议的那样打开工单,这里有一些我刚写的bash代码来升级我的Postgres数据库。由于以下原因,它很复杂:

  • Heroku始终使用hobby db启动审查应用程序,忽略app.json和其他设置
  • heroku pg:upgrade仅适用于非兴趣爱好数据库
  • 创建新数据库后,没有简单的方法可以了解其ALL_CAPS名称以供以后使用
# there's no easy way to grab the DATABASE_NAME so we have to grep the output here :-(
# see https://devcenter.heroku.com/articles/upgrading-heroku-postgres-databases
# and https://help.heroku.com/SY28FR6H/why-aren-t-i-seeing-the-add-on-plan-specified-in-my-app-json-in-my-review-or-ci-app

echo
echo "Upgrading Postgres."
heroku maintenance:on --app $app
addon_name=`heroku addons:create heroku-postgresql:standard-0 --app $app | grep "is being created" | awk '{print $1}'`
db_name=`heroku addons:info $addon_name --app $app | grep "Attachments" | awk -F :: '{print $2}'`_URL
echo $app $addon_name $db_name
heroku pg:wait --app $app
heroku pg:copy DATABASE_URL $db_name --app $app --confirm $app
heroku addons:destroy $addon_name --app $app --confirm $app
heroku pg:promote $db_name --app $app
heroku maintenance:off --app $app

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接