いやあ、紆余曲折ありましたがようやくAWS上にRailsアプリを構築する事ができました。
ちなみに紆余曲折とは以下の通り。
- heroku用に作っていたRailsアプリをDocker用の修正
- ローカル環境下でDockerで動くことを確認
- AWSでDockerを動かすならElasticBeastalkやでと聞く
- Beanstalkだと一つのインスタンスで複数のDockerコンテナを収容できないことが判明
- さらにRDSを使って設定を間違えて無駄に費用を発生させてみたり
- EC2でUbuntuを立ちあげてみる
- おう、Ubuntuに入っているDockerのバージョンが1.01。こんな化石使えるかい
- 不安にかられながらもAmazonLinuxに移行
- おー、AmazonLinuxはDocker1.5だわ。ふつうにDockerが使える幸せ
- PostgresをDockerのオフィシャルリポジトリからコンテナ起動
- RailsアプリのためにDockerfileを数行書いてposgresにリンクしてコンテナ起動
でな具合です。
わかっていれば、数分の作業に随分時間を取られてしまって残念感たっぷりですが、BeanstalkからRDSまで一通り試せたので経験値がっぽり稼げた感じですね。
Beanstalk+RDSはアプリの規模がスケールアップした時は楽だろうと思いますが、今回の案件は小規模なので不要でした。(ebコマンドの手探り感というか暗中模索感というかかゆいところに手が届かない感がつらかった。ebコマンド使うくらいならec2で直接dockerコマンドを使った方が良いです)
一応、将来の拡張時の保険にはなったので良い勉強でした。でも一年も立つとまた更に便利でパワフルなサービスが出てくるかもしれないので、たいした保険にはならないとは思いますが。
エンジニア的には、サービスをあれこれ使うより、コンソールに入って何でもできる方が効率が良いですね。
EC2も二年前に試した時からパワフルになっていて、コンソールでのレスポンスも良いです。
今回、Dockerを使用したのですが、Dockerを使う事により、サーバー上でのRubyのセットアップ等の作業がまったく必要なく、今後のバージョンアップや更新時にもそのあたりの構築やらなにやらの手間がほぼなくなったのは非常に良いですね。構築スクリプトとか構築手順書とはおさらばです。