windows7にVagrant+DockerでPHP開発環境を構築する方法

KAI
pasocafe
Published in
3 min readJan 21, 2016

今まではPHPの開発環境としてはXAMPP(ザンプ)を利用していました。

ただ、XAMPPだとあまりに簡単に環境が構築できてしまい何か物足りないこと、どうせなら実際のビジネスに直結した技術を会得したいという考えから、今回はVagrantとDockerを利用してPHP開発環境を構築することにチャレンジしました。

詳細は後日の記事で書いていこうと思いますが、どのような構成の環境を構築したのかを簡単に図にしてみましたので載せておきます。

次回からは以下の環境を構築する手順を備忘録も兼ねて書いていきます。

vagrant+dockerでPHP環境

※1 windowsに置いたVagrantfileでは以下を設定している。
-VMのOSの指定
-VMのOSのbit指定。64bitかどうか。
-windows側のポート(3535)をVM側のポート(80)に転送する設定
-provision(dockerの操作)実行 ⇒ vagrant実行時にdockerのビルドやコンテナ起動までできてしまう
-php/apacheのビルドとコンテナ起動(コンテナA)
-mysqlのビルドとコンテナ起動(コンテナB)
-mysql用ボリュームのビルドとコンテナ起動(コンテナC)

※2 mysqlの設定ファイル(custom.cnf)は777では読み込めない(エラーになる)ので、DockerfileでコンテナB内の/etc/mysql/conf.dにCOPYしたのちchmodで664に変更している。

※3 コンテナC用のDockerfileでmysqlのデータボリュームとして/var/lib/mysqlをマウントしている。DockerfileでVOLUMEでマウントすると、ホストOS(本例ではVM)上の/var/lib/docker/volumes以下にボリュームの実態が保存される(コンテナCとホストOSで共有される)。この実態データはコンテナCをrmするとその参照は消えるが、データは消えないで残る。なので一応永続的なデータとなっている。

※4 コンテナCはmysqlのデータボリュームとして設けている。※3にあるようにDockerfileで/var/lib/mysqlをマウントしている。そのマウントされたボリュームを、mysqlサーバのコンテナBを起動するときに — volume-fromオプションで呼び出すことで、コンテナBのボリュームとして、コンテナCにマウントされているボリュームがマウントされる。

--

--

KAI
pasocafe

水戸市在住。何事も”IT x 時短 x QOL向上”がキーワード。パソコンの「分からない」を「できた!」に変えるお手伝いをしています。