2017-04-24 45 views
0

我想通过Dokku将我的应用程序部署到VPS。
放在一起的dokku-postgresdocumentation,并就此事(one在GitHub上)相对的,稀缺的互联网文档,似乎有必要配置database.yml使用的URL环境变量url: <%= ENV['DATABASE_URL'] %>
如何为生产配置database.yml

因为我无法找到任何其他来源信息,我想知道应该如何配置database.yml,以及Rails将如何连接到使用Dokku创建的postgres服务。

例如,认为将url链接到DATABASE_URL变量是必要的,这是否足以在我的Rails应用程序和postgres服务之间建立连接,还是需要使用用户名和密码?在后一种情况下,我希望使用什么用户名和密码?

以下是目前我的database.yml的样子。

default: &default 
    adapter: postgresql 
    encoding: unicode 
    pool: 5 
    username: asarluhi 

development: 
    <<: *default 
    database: fireworks_app_development 

test: 
    <<: *default 
    database: fireworks_app_test 

production: 
    <<: *default 
    database: fireworks_app_production 
    pool: 25 
    username: fireworks_app 
    password: <%= ENV['FIREWORKS_APP_DATABASE_PASSWORD'] %> 

此文件被创建,因为它是(除了用于产生更高的池大小)当我创建的应用程序。你如何建议编辑production部分?

的dokku,Postgres的文档指出以下(没有别的)将在链接的应用程序默认设置:

DATABASE_URL=postgres://postgres:[email protected]:5432/lolipop 

代替棒棒糖的Postgres服务的例子,我会用fireworks_app_production匹配在database.yml
数据库的名称是用户名密码指向urlDATABASE_URL变量后,仍然有必要吗?我是否希望添加或删除其他内容?

+1

您在'database.yml'中输入的设置与ENV [“DATABASE_URL”]中的选项合并。 ENV的设置优先。所以是的,你的'pool'选项将被使用。 http://guides.rubyonrails.org/configuring.html#configuring-a-database – max

+0

如果我决定将'url:<%= ENV ['DATABASE_URL']%>''添加到''' database.yml'?正如你所链接的文件所述,这将是最佳做法。 – Asarluhi

+1

在您的'database.yml'中明确添加'url:<%= ENV ['DATABASE_URL']%>'不是必需的,或者是数据库连接器默认使用'ENV ['DATABASE_URL']'的最佳实践。它只是一个示例,用于展示您应该在生产环境中使用ENV变量而不是检查数据库凭据的概念/最佳实践。 – max

回答

2

你不需要担心dokku的database.yml,只需将你的应用程序上传到服务器,让我们用“fireworks”作为例子。

当你第一次上传应用时,这是自动创建的,所以你不需要创建它。

然后安装Postgres的插件和运行

# that will create the container for the database 
$ dokku postgres:create fireworks 
# and then you link both, the app with the database 
$ dokku postgres:link fireworks fireworks 

你不担心别的,与dokku将连接这

,那么你只需要运行db:migrate,一切都是准备好工作了!

+0

考虑到应用程序已经与(已经创建的)fireworks postgres服务链接,我不确定我应该运行'db:create'。文档说我应该只运行'db:migrate'。请参阅:http://donpottinger.net/blog/2014/11/17/bye-bye-heroku-hello-dokku.html – Asarluhi

+1

你是对的,只需运行db:migrate和不要担心创建 – xploshioOn