database.yml をgitにcommitしたくないよね... そんな時に
先に方法
files: "/opt/elasticbeanstalk/hooks/appdeploy/pre/01a_symlink_database_yml.sh": mode: "000777" content: | #!/bin/bash cd /var/app/ondeck/config ln -sf database.example.yml database.yml
- ~/.ebextensions/20_symlink_database_yml.config
概要
デプロイ処理の途中で、database.yml
に database.example.yml
をsymlinkしている
どうやっているの?
~/.ebextensions
について
- Elastic Beanstalkでは、コードの
~/.ebextensions/
に、のデプロイ前後に実行するコマンドや、ファイルを追加するための設定を格納できる- ただし、デプロイの途中に何かを挟むことはできない
files:
は、コードが展開される前に、指定したpathに、content
の内容のファイルを設置する
/opt/elasticbeanstalk/hooks/appdeploy/pre/01a_symlink_database_yml.sh
について
/opt/elasticbeanstalk/hooks/appdeploy/
は、デプロイ時に実行されるシェルが格納されているディレクトリ- 辞書順にシェルが実行されるので、適切な名前のシェルを追加することで、任意の処理をデプロイ処理の途中に紛れ込ませることができる
pre/01a_symlink_database_yml.sh
の場合、コードを展開した後に実行される/var/app/ondeck
は、コードが最初に展開されるディレクトリ- デプロイ処理に成功すると、
/var/app/current
に mv される
- デプロイ処理に成功すると、
- 上記方法は、オフィシャルなドキュメントに明示されている方法ではないので、今後の更新で使えなくなるかも
雑記
- Elastic Beanstalk的には、
database.yml
をcommitして欲しい様子 - heroku だと、heroku環境用の
database.yml
を生成してくれる