• 7
    いいね
  • 0
    コメント

Dockerで開発環境作った時の話

こんにちは。セカイエの村田です。
先週から、うさぎを飼い始めました。
名前 「あき男」 っていいます

経緯

自分は '2016/8/1'からセカイエにjoinしたのですが、初日って入社手続きや開発環境作ったりいろいろありますよね。
セカイエの開発環境はおなじみの「 vertualbox + vagrant 」のLAMP環境なのですが、イメージ落としたり、シェルでプロビジョニング走ったり時間がかかります。

また、最近のvagrantとvirtualboxの相性が悪く、

スクリーンショット 2016-12-20 10.06.33.png

vagrantが仮想マシンに接続できないとかありました..

そんな経緯から、Dockerで開発環境作れればいいかなと思ったのがきっかけです

環境

作りたかった環境は以下のような感じで、

スクリーンショット 2016-12-20 10.11.40.png

Appコンテナ(PHP + Apache + CentOS) と DBコンテナ(MySQL)を切り離した構成になります

はまったところ

起動にはなるべく手間をかけたくなかったので、「Docker-Compose」というコンテナを複数管理できるツールを利用していたのですが、コンテナが立ち上がり使用できる状態になるまでの順番がうまくコントロールできなくて、はまりました><

具体的には、
アプリケーションはDBがないと動かないことが前提なので、Appコンテナが起動する前に、DBコンテナが起動されていて、且つ使用できる状態になっていなければいけないのですが、MySQLの初期処理があったりでどうしても、Appコンテナが先に立ちあがってしまう状態でした

いろいろ調べた結果、

Docker公式にもあったのですが、
スクリーンショット 2016-12-20 10.26.50.png

上記のようなスクリプトをentrypointにセットして、MYSQLコンテナが使える状態になるまで待つようにしました

今後の課題

Dockerをproduction環境でも利用できるような仕組みを整えたいと企んでいたりしてます。
今は、DockerHubとGitHubの連携もできるので、

スクリーンショット 2016-12-20 10.30.15.png

masterにpushしたファイルの中にDockerfileが含まれていたら、Dockerhubが検知してくれて自動でコンテナイメージをビルドしてくれるので運用も楽になりそうです

この投稿は セカイエ株式会社 Advent Calendar 201620日目の記事です。