実現したいこと
Dockerを使ったRails開発で、公開してはならないAPIキーやパスワードなどを別ファイルでGit管理する方法。
大雑把な順番
- gemを追加
- .envファイルにプロジェクトで使う環境変数を記述
- .gitignoreに.envファイルを含める
- erbテンプレートに従って環境変数を渡す
使用したバージョン
- Rails6
- ruby 2.7.2
手順
gem 'dotenv-rails'を追加
Gemfile
gem 'dotenv-rails'
コンテナ内にbundle installを行う
bash
docker-compose run コンテナ名 bundle install
docker-compose.ymlを編集
yml内にenv_fileと書くことで環境変数を管理するファイルを読み込む設定ができる
docker-compose.yml
code:docker-compose.yml
web:
省略
env-file:
- .env(環境変数を管理したいファイル名を記述)
コンテナをビルドする
docker-compose.ymlを編集したので改めてビルドする
docker-compose build
.envファイルに設定したい環境変数を書く
.env
MAP_API_KEY="発行したAPIキー"
PASSWORD="パスワード"
.envファイルをgitignoreに追加
.gitignore
/.env
viewのerbテンプレートで環境変数として渡す
index.html.erb
以上省略
<script src="https://maps.googleapis.com/maps/api/js?key=<%=ENV['MAP_API_KEY']%>&callback=initMap" async defer></script>
ここで重要なのがerbテンプレートに従って、 <%=ENV['']%>
と書くという事。
これをせずに、ENV['MAP_API_KEY']
と書いて渡しており、上手くviewで表示できず、2日ほど詰まっていた。