#1. はじめに
この記事でざっとDOCKERでLARAVELの開発環境設定方法について紹介したいと思います。
#2. DOCKERの基本概念
DOCKERについ別の記事で紹介したいと思いっていますが、今回LARADOCKのことがわかりやすいようにDOCKERの基本概念を共有させていただきます。
IMAGE:
IMAGEは一つの仮想マシンの設計です。
注意:IMAGEは仮想マシンではなくて、仮装マシンの設計だけです。
わかりやすいように、IMAGEがOOPのCLASSと同じだと思いってもいいです。OOPのCLASSなら、一つのCLASSを作成するため、そのCLASSの関数や変数などを定義しないといけません。DOCKERのIMAGEの場合、同じのロジックで、作成した仮想マシンの中に、なんのOSとかそのOSになにをインストールしたいのかとかを定義しないといけません。
IMAGEの属性が書かれるファイルはDockerfileと呼びます。
Dockerfileの例:
FROM ubuntu:14.04
RUN apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449
RUN apt-get update -y \
&& apt-get install -y software-properties-common wget \
&& wget -O - http://dl.hhvm.com/conf/hhvm.gpg.key | sudo apt-key add - \
&& add-apt-repository "deb http://dl.hhvm.com/ubuntu $(lsb_release -sc) main" \
&& apt-get update -y \
&& apt-get install -y hhvm \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
RUN mkdir -p /var/www
ADD server.ini /etc/hhvm/server.ini
RUN usermod -u 1000 www-data
WORKDIR /var/www
CMD ["/usr/bin/hhvm", "-m", "server", "-c", "/etc/hhvm/server.ini"]
EXPOSE 9000
上記はHHVMというIMAGEのDockerfileです。詳細を見ると、このIMAGEのOSはubuntu:14.04です。あとそのUBUNTU仮想マシンの上でHHVMをインストールするため、たくさんのコマンドを実行するように定義しました。
最後の行は「EXPOSE 9000」なんですが、意味は何かというと、外からこのHHVMに9000ポートでアクセスできるという意味です。
CONTAINER
CONTAINERはIMAGEのインスタンスで、仮想マシンです。
IMAGEはOOPのCLASSと同じなら、CONTAINERはOOPのOBJECTと同じだと連想してもいいです。
複数のCONTAINERの連携を管理するため、DOCKERーCOMPOSEを使います。
#3. LARADOCK
LARADOCKのホームページ:http://laradock.io/
LARADOCKは何かというと、LARAVELの開発やデプロイなどのためのIMAGEのDockerfileのセットです。それらの中に、使いたいIMAGEを決めて、PULLして、実行します。
そういえば、LARADOCKを使わないで、自分で最初から、自分の好きなIMAGEを洗濯して、自分のDockerfileを書いて使ってもいいという人が結構いると思いますが、LARADOCKから自分のカスタマイズができるから、それを使うのがいいでしょう。
LARADOCKの使い方は、LARADOCKのホームページに細かく書いてあるが、パーツ2で少し紹介したいと思いっています。ぜひ参考してください。
https://qiita.com/nguyenngocpfievk56/items/241c415c662b8499d96f
メリット:
・DOCKERを使ったら、どんなPCでも、どんなサーバーでも、DOCKER以外、何もインストールしなくて、どんなプロジェクトでも実行できます。そのため、PCやサーバーなどのための不明点がなくなります。
・仮想マシンなので、色々技術を導入して試しても安全で、本番に影響がでるのは心配なしです。
・LARADOCKがちゃんと作られたので、使う可能性があるものが全部入ってると思います。便利だし、使いやすいです。
#4. 結論
これから、新しプロジェクトがあれば、DOCKERを使って開発したいと思いっています。特に、LARAVELのプロジェクトなら、LARADOCKをカスタマイズして使いって見ます。