我正在部署一个要求将数据库信息作为单独的args传递的应用程序,例如
$ someapp --db-host=example.com --db-port=5433 --db-name=mydb --db-user=me --db-password=mypass
查看heroku
提供的内容时,似乎唯一可用的东西就是DATABASE_URL
。我当然可以在Procfile
中解析其值并提取所有必要的内容,目前我正在考虑使用类似小助手脚本的内容,例如parse_db_url.py
:
#!/usr/bin/env python3
import os
from sqlalchemy.engine.url import make_url
if __name__ == '__main__':
url = make_url(os.environ.get('DATABASE_URL'))
env = f'''PG_USER={url.username}
PG_PASSWORD={url.password}
PG_HOST={url.host}
PG_PORT={url.port}
PG_DBNAME={url.database}'''
print(env)
并将其eval
Procfile
中
web: eval $(python parse_db_url.py) && someapp --db-host=$PG_HOST ...
等等,但这是正确的方法还是我只是忽略了某些东西?如果这是相关的,我正在免费计划atm上进行测试,但是在对部署感到满意时转向了一项业余计划。