質問: Dockerを使ってrailsアプリケーションの環境を構築したいです. 必要なgem等を含め環境をdocker上に構築し, なおかつ新しい機材が増えるたびに移植を簡単にしたいです.(railsアプリが動くDemo環境をdockerを使って簡単に複数作れるようにしたいです) このためにはどのような記述をすればいいのでしょうか? dockerについては、仮想マシンのOS共有版というような甘い認識で考えていたくらいで素人です. Dockerfileをとりあえず書いてみて, emacsをデフォルトでインストールさせる、みたいな記事を見ながらコンテナを作ってはみたのですが例えばrailsアプリの場合mongoDBやmysql, ruby, railsの所定のバージョンのインストールが必要だと思います またrails gemも必要です. dockerfileはどのように記述すればいいのでしょうか? そもそもこのような一括インストールはすべてコンテナ起動時にインストールされるようにdockerfileに書くべきなんでしょうか? コンテナ立ち上げ後にじっこうできるような方法はあるのですか? 環境移植のしやすさの観点から有効な方法&参考記事を教えていただけるとありがたいです, よろしくお願いいたします。
回答: コンテナに使用するOSの問題もあるかもしれませんが、私が試した範囲ではDockerfileだけで、求めるコンテナを作ることはできませんでした。 使い捨てのデモ環境を作ることができればいいと割り切り、一つのコンテナの中にすべてを入れることにして、次のような手順を取りました。 * Dockerfileでできるところまでのコンテナを作る * Docker exec でコンテナに入り、必要なソフトを手動でインストールし、各種設定も行う。 * Docker exec でコンテナに入った状態でサービスをスタートする。 * Docker commit でイメージを作る このイメージをrunさせればOKです。 Dockerに慣れていないのであれば、Dockerfileを使わないで、OSだけのコンテナを使い、インストールは全部手でやってもいいかもしれません。 プラグインなどを追加していく時も、同じようにDocker execでコンテナに入ってマニュアルで入れ、新しいイメージを作ります。 Dockerの設計思想からは外れる使い方かもしれませんが、とにかく動くものは作れます。 ご参考まで。