docker-composeを利用した環境構築
それでは、インストールしたDockerを利用して環境構築を行なっていきましょう。
大まかな処理の流れを動画で確認してから、 改めて以降の解説を元に環境構築を進めていきましょう。
1. 仮想環境用のフォルダを作成
finderでユーザーディレクトリにアクセスし、「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を作成する
作成したlamp_dockディレクトリの中に、
VSCodeのサイドバーの「新規ファイル作成」ボタン
を利用して docker-compose.yml を作成します。
docker-compose.yml
# 設定ファイルの文法のバージョン3を利用する。
version: '3'
services:
# 1. phpモジュールを搭載したapacheをインストールするコンテナ。
php:
build: ./php # phpディレクトリのDockerfileに基づいてコンテナ作成
volumes:
- ../www:/var/www # ホストのwwwディレクトリをphpコンテナの/var/www(ドキュメントルートのあるディレクトリ)と同期。
ports:
- 8080:80 # ホストの8080番ポートをコンテナの80番ポートにフォワード(転送)
depends_on:
- mysql
# 2. mysqlをインストールするコンテナ
mysql:
image: mysql:5.7 # mysql5.7のイメージをそのまま利用。
# mysqlの起動時に文字コードを指定
command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci
volumes:
- ./db:/var/lib/mysql # ホストOSのdbフォルダ内にmysqlコンテナのDBの内容を保存
environment:
- MYSQL_ROOT_PASSWORD=root # mysqlのルートパスワードを設定
- MYSQL_DATABASE=sample # デフォルトで作成するデータベース名を設定
- MYSQL_USER=testuser # デフォルトで作成するDBユーザー名を設定
- MYSQL_PASSWORD=password # デフォルトで作成するDBユーザーのパスワードを設定
- "TZ=Asia/Tokyo" # タイムゾーンを設定
# 3. phpmyadminをインストールするコンテナ
phpmyadmin:
image: phpmyadmin/phpmyadmin # phpmyadminのコンテナイメージをそのまま利用
environment:
- PMA_HOST=mysql # 上記で作成したmysqlコンテナに接続
depends_on:
- mysql # 上記で作成したmysqlコンテナとリンクする
ports:
- 8888:80 # ホストの8888番ポートをphpmyadminコンテナの80番ポートに転送
volumes:
- ./pma/sessions:/sessions # ホストOSのpmaディレクトリ内にphpmyadminコンテナのセッションファイルを保存
念の為詳しく解説しておりますが、現時点で深い理解は不要です。コピーペーストで構いません。
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の実行
ここまでで仮想環境の準備は完了です。
VScodeのターミナルを開いて、dockerを実行します。 メニューバーから「ターミナル > 新しいターミナル」を選び、ターミナルを開きます。
cd ~/MyDocker/lamp_sample/lamp_dock
上記のコマンドで 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番ポートでアクセスします。
http://localhost:8080/sample.php
にアクセスしてみましょう。
画面上に「Hello, World!」の文字が表示されればOKです。
phpmyadminの確認
続いて、phpmyadminを利用してみましょう。 phpmyadminのコンテナには8888番ポートでアクセスします。
にアクセスしてみましょう。
docker-compose.ymlで
- ユーザ名: testuser
- パスワード: password
と設定していますので、上記を入力して phpmyadminにログインしてみましょう。
問題なくログインできればOKです。