docker-composeを利用した環境構築(Docker Toolbox向け)
1. 仮想環境用のフォルダを作成
エクスプローラでユーザーディレクトリにアクセスし、「MyDocker」という名前でディレクトリを作成します。 ( もしくはVSCodeのターミナルから
cd ~
mkdir MyDocker
と実行します。)
2. VSCodeを利用して作成したMyDockerディレクトリを開く
VSCodeの新しいウィンドウを立ち上げ、スタートメニューの「フォルダを開く」から作成したMyDockerディレクトリを開きます。
3. MyDockerディレクトリ内にlamp_sampleその中にlamp_dockディレクトリを作成する
VS Codeの左サイドバーに表示されているMyDockerディレクトリに、フォルダ作成ボタンを利用して「lamp_sample」という名前のディレクトリを作成します。さらに、そのlamp_sampleディレクトリの中に「lamp_dock」というディレクトリを作成しましょう。
4. lamp_dockディレクトリにdocker-compose.ymlを作成する
cd ~/MyDocker/lamp_sample
pwd
の順でコマンドを実行し、表示されたパスをメモしておきます。
大抵の場合
/c/Users/[ユーザー名]/MyDocker/lamp_sample
のようなパスになるでしょう。
作成したlamp_dockディレクトリの中に新規ファイル作成ボタンを利用してdocker-compose.ymlを作成します。 (2箇所の[メモしたパス]の箇所には先ほどpwdで確認したパスをコピーペーストで貼り付けてください。)
docker-compose.yml
version: '3'
services:
php:
build: ./php
volumes:
- [メモしたパス]/www:/var/www
ports:
- 8080:80
depends_on:
- mysql
mysql:
image: mysql:5.7
command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci --innodb-use-native-aio=0
volumes:
- [メモしたパス]/lamp_dock/db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=sample
- MYSQL_USER=testuser
- MYSQL_PASSWORD=password
- "TZ=Asia/Tokyo"
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
- PMA_HOST=mysql
depends_on:
- mysql
ports:
- 8888:80
念の為詳しく解説しておりますが、現時点で深い理解は不要です。コピーペーストで構いません。
5. phpディレクトリにDockerfileを作成する
lamp_dockディレクトリ内に「php」というディレクトリを作成し、その中に「Dockerfile」という名前でファイルを作成します。(拡張子は不要です。)
Dockerfile
# apacheとphp7.2がインストールされたwebサーバ
FROM php:7.2-apache
# 設定ファイルをコンテナにコピー
COPY ./php.ini /usr/local/etc/php/
# vim 及び 各種PHPモジュールのインストール、キャッシュ消去
RUN apt-get update && apt-get install -y \
vim \
&& docker-php-ext-install pdo_mysql mysqli mbstring exif \
&& apt-get clean
先ほどのdocker-compose.yml内で指定した、phpのコンテナを作成するための設計図になります。
ベースとなっているのはDockerhubで配布されているphpモジュール設定済みのapacheで、さらにpdoを利用できるように各種モジュールをインストールしています。
6. php.iniの作成
phpディレクトリにもう一つのファイル「php.ini」を作成します。
php.ini
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
phpの初期設定を行うファイルです。 デフォルトの設定に上記の設定が上書きされます。
7. docker-compose upの実行
ここまでで仮想環境の準備は完了です。
cd ~/MyDocker/lamp_sample/lamp_dock
docker-compose up -d
上記のコマンドで仮想環境の立ち上げを行います。 初回起動はそれぞれのコンテナの元となるイメージをダウンロードしてからコンテナ作成が行われるので3~5分弱程度の時間がかかります。(マシンスペック、通信環境によって異なります) 次回以降の起動は非常にスピーディになるのがdockerの特徴です。
Creating lamp_dock_mysql_1 ... done
Creating lamp_dock_php_1 ... done
Creating lamp_dock_phpmyadmin_1 ... done
上記の表示が行われ、プロンプトが表示されれば環境構築は完了です。
php環境の確認
それでは、作成した環境を確認してみましょう。 lamp_sampleディレクトリに新たに「www」というディレクトリが出来上がっています。
wwwディレクトリ内のhtmlディレクトリがドキュメントルートになっていますので、この中に「sample.php」を作成し
sample.php
<?php
print('Hello, World!');
以上の内容で保存しましょう。
webサーバのコンテナには8080番ポートでアクセスします。
ターミナルから
docker-machine ip default
でdockerが稼働している仮想マシンのipアドレスを確認し、
http://[確認したipアドレス]:8080/sample.php
にアクセスしてみましょう。
画面上に「Hello, World!」の文字が表示されればOKです。
phpmyadminの確認
続いて、phpmyadminを利用してみましょう。 phpmyadminのコンテナには8888番ポートでアクセスします。
にアクセスしてみましょう。
docker-compose.ymlで
- ユーザ名: testuser
- パスワード: password
と設定していますので、上記を入力して phpmyadminにログインしてみましょう。
問題なくログインできればOKです。
以降も、toolboxをご利用の方はlocalhostを
docker-machine ip default
で確認したipアドレスに読み替えてください。