首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Heroku审查应用程序中指定Postgres数据库计划

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

Stack Overflow用户
提问于 2020-03-17 14:59:41
回答 3查看 830关注 0票数 3

我正在尝试使用Heroku审查应用程序来测试并向我的同事演示我的站点。该网站有一个大型数据库,无法与Heroku的免费hobby-dev数据库一起工作。

我正在尝试使用app.json清单文件来指定我的应用程序的平台,就像导游一样。我使用的代码如下:

app.json

代码语言:javascript
复制
  {
    "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"
        }
      }
    }
  }

这将生成OK,但是如何显式地指定我希望使用的数据库计划?

EN

回答 3

Stack Overflow用户

发布于 2020-03-24 10:33:44

以防其他人碰到这个。

根据heroku的支持,他们已经改变了为评审和CI应用提供附加程序的方式,这意味着默认情况下,他们只会提供免费/最便宜的计划,而不管您的app.json 以下是他们推理的一些细节和解释是什么。

如果您打开一张票证,他们可以在帐户级别覆盖它(在撰写本报告时,它似乎没有内置到他们的管理区域中)。

票数 10
EN

Stack Overflow用户

发布于 2020-11-19 22:17:35

您只需使用sintax:heroku-postgresql:指定计划即可。

代码语言:javascript
复制
"addons": [
        {
          "plan": "heroku-postgresql:<plan_you_select>",
          "as": "DATABASE"
        }
 ]

有关可用计划的列表,请查看以下链接:https://devcenter.heroku.com/articles/heroku-postgres-plans#hobby-tier

您还可以使用以下链接:https://elements.heroku.com/addons/heroku-postgresql在其上选择一个计划,您将在CLI上看到计划名称

票数 1
EN

Stack Overflow用户

发布于 2022-04-08 15:00:52

如果您不能/不能像皮特的回答建议的那样打开一张票,下面是我为升级Postgres而编写的bash代码。这很复杂,因为:

  • Heroku总是以一个嗜好db开始查看应用程序,而忽略了app.json和其他设置。
  • heroku pg:upgrade只对非嗜好的dbs工作。
  • 在创建一个新的db之后,没有简单的方法来学习它的ALL_CAPS名称,以便在以后的命令中使用
代码语言:javascript
复制
# 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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60724956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档