【Windows向け】Docker、DockerComposeを利用して環境構築をする方法

Dockerを利用した環境構築の方法についてブログ書いていきたいと思います。 Dockerとは仮想環境の構築ツールで、比較的学習コストが低いと思ってます。 仮想環境で主流なのは、VM上に仮想マシンを用途に合わせて用意するという認識ですが Dockerは仮想マシンを1個Docker用に用意し、あとはコンテナという単位をDockerの中に作成します。 大きな違いは、作成される仮想マシンの数です。Dockerは用意する仮想マシンが1個で済みます。
  1. この記事で説明したいこと
  2. Docker Composeについて
  3. Docker Composeの設定ファイルについて
  4. Docker Fileについて
  5. 環境構築例
  6. おわりに

この記事で説明したいこと

DockerとDockerComposeを使って、仮想環境を作成し、 作成した仮想環境でWebアプリの実行が出来るようになることを説明したいです。 なので、前提知識として、Docker Fow Windowsを利用して、 Dockerのコンテナの起動ができるという知識と、サーバーに関する基本的な知識が必要になります。

Docker Composeについて

Dockerコンテナを管理する為のツールで、Dockerが提供しているツールになります。 設定ファイルを用意することで、設定ファイルに記載した環境をコマンド一つで構築することができます。 Docker For Windowsなら勝手に入ります。

Docker Composeの設定ファイルについて

DockerComposeの設定ファイルは、docker-compose.ymlという名前で作成します。今回はVersion3で利用できる物を記述します。 主な設定項目は下記になります。
コマンド名効果
image利用したいDockerImageを指定します。
build利用したいDockerFileを指定します。
container_name作成するコンテナに名前をつけられます。つけておくとコンテナ操作が楽です。
linksコンテナ間をリンク連携します。
portsコンテナのポートが指定できます。8000:80にすると8080を80に転送します。
exposeportsに似てますが、ポートの開放をリンクしたコンテナに限定します。
volumesDockerCompose.ymlで指定したパスをコンテナに同期できます。
他にも沢山あるので気になる人はドキュメントを見てください。

Docker Fileについて

DockerImageをカスタマイズしたい場合に利用するものになります。 Linuxコマンドを実行することができます。ただ、そのままLinuxコマンドを実行できないので、 ここでもDockerFile用のコマンドを利用します。
コマンド名効果
FROMベースとなるDockerImageを指定します。
RUNOSのコマンドを実行する際に利用します。
ADDDockerComposeのPJ内からDockerコンテナ内にファイルを配置します。
CMDコンテナ起動時に実行するコマンドを記述します。docker-compose.ymlにcommandを書くと、CMDは無視されます。

環境構築例

ここからは、実際に環境構築が行えるよう下記に環境構築例を示します。 Apacheとphpを別コンテナで動かした場合の例になります。phpはモジュールではなくphp-fpmで動かしています。 実際動作しますが、無駄な記述があったりするので、検証用にのみ利用した方が良いと思います。

ファイル構成

GISTを確認して、この構造を作成してください。php.iniやwww.conf、httpd.confはご準備下さい。

docker-compose.yml

docker composeの記述は下記の様にしてあります。コマンドの効果は、さっき書いた表を確認してください。

apacheコンテナのDockerFile

ApacheのコンテナのDockerFileになります。このままでは利用できないので、httpd.confを設定するようにしてください。設定方法について、この記事では詳細に触れません。注意点のみ記述します。ごめんなさい。 httpd.confの設定変更は、この中に書いていませんので、httpd.conf内は、srcがDocumentRootになるように変更してください。その際、srcフォルダの権限をApache内で変更してください。良くわからなければここをにかえてください。

phpコンテナのDockerFile

phpのコンテナのDockerFileになります。こちらはwww.confのlisten項目を9000に設定してください。

コンテナのビルド

作成頂いたファイル構成のrootディレクトリに入って、エクスプローラにcmdと打ち込んでください。コマンドプロンプトが立ち上がったら そこに、docker-compose buildと入力頂けると、設定に基づいて、dockerのビルドがはじまります。

コンテナの起動

dockerのビルドが終わったらコンテナを起動します。ビルドを行ったらコマンドプロンプトで、そのままdocker-compose up -dとやることで、 バックグラウンドでDockerを起動するので色々便利です。-dなしで立ち上げ無い方が僕は好きです。ただ、コンテナの状態が常時確認できなくなるので、必要に応じてdocker-compose psとコマンドを打てば、コンテナの状態が確認できて便利です。docker buildがエラーする場合、Dokcerの再起動をすることで、エラーがでなくなることがあります。

コンテナの制御

コンテナをbashで操作したい場合は、docker-compose exec container_name bashとやれば操作ができます。この記事のdocker-compose.ymlの場合ですと、docker-compose exec php or apache bashで操作が可能になります。既に同名のコンテナがある場合は、コンテナの起動ができないので注意してください。

おわりに

気が付いたら長文になっていました。Dockerはとても便利なツールだと思います。どんな環境にも手軽に基盤を構築できます。基盤の中に必要な機能を必要な分だけ詰め込めるというところが、やっていて、いいなぁと思ったところでアリマス。興味ある人は利用してみてください。あと、くどいですが、この記事で出してるサンプルは検証用なので、本番では利用しないことをおすすめします。では、長々お付き合い頂きありがとうございました。
料金表ナビゲーション 料金表ナビゲーション

おすすめ記事