2017-04-24 1 views
0

Je souhaite déployer mon application via le Dokku sur un VPS.
Mettre ensemble le dokku-postgresdocumentation et le parent, la documentation Internet rare en la matière (one à GitHub), il semble nécessaire de configurer database.yml pour utiliser l'environnement variable URL url: <%= ENV['DATABASE_URL'] %>
Comment configurer database.yml pour la production

Depuis que je ne pouvais pas trouver d'autres sources de informations, je me demande comment database.yml doit être configuré, et comment Rails se connectera au service postgres créé avec Dokku.

Par exemple, pris pour acquis que liant url à la variable DATABASE_URL est nécessaire, ce que cela sera suffisant pour établir une connexion entre mon application Rails et le service ou serait-il encore postgres nécessaire d'utiliser un nom d'utilisateur et un mot de passe? Dans ce dernier cas, quel nom d'utilisateur et quel mot de passe dois-je utiliser?

Voici à quoi ressemble actuellement mon 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'] %> 

Ce fichier a été créé comme il est (à l'exception d'une taille de la piscine plus élevée pour la production) quand j'ai créé l'application. Comment suggéreriez-vous d'éditer la section production?

La documentation Dokku-postgres indique que ce qui suit (et rien d'autre) sera mis sur l'application liée par défaut:

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

A la place de l'exemple de service postgres sucettes, je voudrais utiliser fireworks_app_production pour correspondre le nom de la base de données database.yml
Y nom d'utilisateur etmot de passe encore nécessaire après avoir rappelé url à la variable DATABASE_URL? Suis-je censé ajouter ou enlever quoi que ce soit d'autre?

+1

Les paramètres que vous entrez dans 'database.yml' sont fusionnés avec les options de ENV [" DATABASE_URL "]. Les paramètres de ENV ont la priorité. Donc oui votre option 'pool' sera utilisée. http://guides.rubyonrails.org/configuring.html#configuring-a-database – max

+0

Mon option 'pool' serait-elle fusionnée si je décidais d'ajouter' url: <% = ENV ['DATABASE_URL']%> 'dans' database.yml'? Comme la documentation que vous liez les états, ce serait une bonne pratique. – Asarluhi

+1

L'ajout de 'url: <% = ENV ['DATABASE_URL']%>' explicitement dans votre 'database.yml' n'est pas nécessaire ou une bonne pratique puisque le connecteur de base de données utilise' ENV ['DATABASE_URL'] 'de toute façon par défaut.C'est juste un exemple pour montrer le concept/la meilleure pratique que vous devriez utiliser une var ENV dans la production au lieu de vérifier vos informations d'identification de base de données. – max

Répondre

2

Vous n'avez pas besoin de vous inquiéter de la base de données.yml avec dokku, il suffit de télécharger votre application sur le serveur, utilisons par exemple le terme "feux d'artifice".

Lorsque vous téléchargez la première fois l'application, celle-ci est créée automatiquement, vous n'avez donc pas besoin de la créer.

vous installez le plugin postgres et exécutez

# 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 

vous n'avez pas à vous soucier de quoi que ce soit d'autre, avec cette Dokku reliera cette

alors vous avez juste à courir db:migrate et tout est prêt à travailler!

+0

Je ne suis pas sûr que je devrais lancer 'db: create', étant donné que l'application est déjà liée au service postgres de Fireworks (déjà créé). La documentation dit que je devrais exécuter seulement 'db: migrate'. Voir par exemple: http://donpottinger.net/blog/2014/11/17/bye-bye-heroku-hello-dokku.html – Asarluhi

+1

Vous avez raison, il suffit de lancer le db: migrer et ne vous inquiétez pas de la création – xploshioOn