Dockerで開発環境作った時の話
こんにちは。セカイエの村田です。
先週から、うさぎを飼い始めました。
名前 「あき男」 っていいます
経緯
自分は '2016/8/1'からセカイエにjoinしたのですが、初日って入社手続きや開発環境作ったりいろいろありますよね。
セカイエの開発環境はおなじみの「 vertualbox + vagrant 」のLAMP環境なのですが、イメージ落としたり、シェルでプロビジョニング走ったり時間がかかります。
また、最近のvagrantとvirtualboxの相性が悪く、
vagrantが仮想マシンに接続できないとかありました..
そんな経緯から、Dockerで開発環境作れればいいかなと思ったのがきっかけです
環境
作りたかった環境は以下のような感じで、
Appコンテナ(PHP + Apache + CentOS) と DBコンテナ(MySQL)を切り離した構成になります
はまったところ
起動にはなるべく手間をかけたくなかったので、「Docker-Compose」というコンテナを複数管理できるツールを利用していたのですが、コンテナが立ち上がり使用できる状態になるまでの順番がうまくコントロールできなくて、はまりました><
具体的には、
アプリケーションはDBがないと動かないことが前提なので、Appコンテナが起動する前に、DBコンテナが起動されていて、且つ使用できる状態になっていなければいけないのですが、MySQLの初期処理があったりでどうしても、Appコンテナが先に立ちあがってしまう状態でした
いろいろ調べた結果、
上記のようなスクリプトをentrypointにセットして、MYSQLコンテナが使える状態になるまで待つようにしました
今後の課題
Dockerをproduction環境でも利用できるような仕組みを整えたいと企んでいたりしてます。
今は、DockerHubとGitHubの連携もできるので、
masterにpushしたファイルの中にDockerfileが含まれていたら、Dockerhubが検知してくれて自動でコンテナイメージをビルドしてくれるので運用も楽になりそうです