Rails アプリの wercker docker 対応で PostgreSQL の対応
Wercker からマイグレーションせよというメールが来たので対応してみた - mallowlabsの備忘録 を参考に wercker のマイグレーションを実施した。
こちらの記事では MongoDB の例だったので、PostgreSQL の場合はどうするのかと調べた。
結論としては
box: ruby:2.3 services: - id: postgres env: POSTGRES_PASSWORD: ourlittlesecret POSTGRES_USER: myuser build: steps: - bundle-install - rails-database-yml: service: postgresql-docker - script: name: echo ruby information code: | echo "ruby version $(ruby --version) running" echo "from location $(which ruby)" echo -p "gem list: $(gem list)" - script: name: db:migrate code: RAILS_ENV=test bundle exec rake db:migrate - script: name: rspec code: RAILS_ENV=test bundle exec rake spec deploy: steps: - heroku-deploy: key: $HEROKU_KEY user: $HEROKU_USER app-name: $HEROKU_APP_NAME
のような感じで。
ポイントは
services: - id: postgres
のように PostgreSQL のコンテナを指定し、rails-database-yml で postgresql-docker を指定する。
- rails-database-yml: service: postgresql-docker
すると http://devcenter.wercker.com/docs/services/postgresql に記載されている環境変数を使う database.yml を吐いて、正常に接続できるようになる。
rails-database-yml のタスクは
step-rails-database-yml/run.sh at master · wercker/step-rails-database-yml · GitHub
postgresql-docker を指定することに気付かずにハマった。