3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

rails5.2 credentials.yml.encでDB情報を管理

Posted at

困りごと

DockerでRails環境を構築してそのイメージで開発・本番環境を運用している。
DBはRDSのmysqlを使用している。
database.ymlに平文でDBのユーザー、PASSを書くのはまずいので、DockerFileに環境変数としてユーザとPASSを記載して、gitにあげないようにしていた。
だけど、DockerFileの修正等が入ると、本番環境のDockerFileも修正しないといけないのでめんどくさい。
チームで開発するなら、DockerFileもgitにあげて置きたい。

解決策

credentials.yml.encを使う。
awsのアクセスキー等をこちらで管理していたので、同じように機密情報はこちらで管理してみよう。

credentials.yml.enc
aws:
   access_key_id: AAAA
   secret_access_key: BBBB

# Used as the base secret for all MessageVerifiers in Rails, including the one protecting cookies.
secret_key_base: 1111111111aaaaaa...

db_user xxxxx
db_pass yyyyy
database.yml
production:
  <<: *default
  adapter: mysql2
  encoding: utf8
  database: db_name
  username: <%= Rails.application.credentials[:db_user] %>
  password: <%= Rails.application.credentials[:db_pass] %>
  host: ABCDEFG

credentialsの中身をとるには以下

Rails.application.credentials[:db_user]
Rails.application.credentials[:db_pass]

まとめ

これでDockerFileをgitにあげても、DB情報がバレずにすみます。
環境ごとにDockerFileをさわるのは、環境がずれたりなにより、めんどくさい。
CI/CDも可能になるので挑戦してみたいです。

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?