2017-04-24 49 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