Help us understand the problem. What is going on with this article?

Dockerで作る開発環境

More than 3 years have passed since last update.

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が検知してくれて自動でコンテナイメージをビルドしてくれるので運用も楽になりそうです

muramun
▽好きなこと AWS Hadoop ▽気になってること HTTP2 Aurelia.js Paas IoT
sekaie
住宅リフォームサービス「リノコ」を開発・運営するスタートアップ企業
http://www.sekaie.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away