環境構築演習
では、ここまで学んだ内容を生かして、LAMP環境の構築に挑戦してみましょう。
LAMP環境の要件
構築するLAMP環境の要件は以下の通りです。 以下の要件一覧とdocker-compose.ymlのイメージに従って、~/MyDocker/lamp_sampleディレクトリ以下に、各ディレクトリと設定ファイルを作成しましょう。
1. phpコンテナ
- コンテナ名: php
- ビルドディレクトリ: lamp_sampleディレクトリ直下のphpディレクトリ
- ベースイメージ: php:7.4-apache
- iniファイルでマルチバイト対応および日本時間への対応を行う
- インストールするモジュール: pdo_mysql mysqli mbstring exif
- ポートフォワーディング: ローカルの8080番をコンテナの80番にフォワーディング
- ボリューム: lamp_sampleディレクトリ直下のwwwディレクトリをコンテナの/var/wwwにマウント
- 依存サービス: mysqlサービスに依存
2. mysqlコンテナ
- コンテナ名: mysql
- ベースイメージ: mysql:5.7
- 起動時に実行するコマンド: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci --innodb-use-native-aio=0
- ボリューム: lamp_sampleディレクトリ直下のdbディレクトリをコンテナの/var/lib/mysqlにマウントし、DBの内容を永続化
- 環境変数
- MYSQL_ROOT_PASSWORD: 任意のmysqlルートパスワード
- MYSQL_DATABASE: 任意のDB名
- MYSQL_USER: 任意のDB一般ユーザー名
- MYSQL_PASSWORD: 任意のDB一般ユーザーパスワード
- TZ: Asia/Tokyo(タイムゾーン)
3. phpmyadminコンテナ
- コンテナ名: phpmyadmin
- ベースイメージ: phpmyadmin/phpmyadmin
- ポートフォワーディング: ローカルの8888番ポートをphpmyadminコンテナの80番ポートに転送
- 依存サービス: mysqlサービスに依存
- 環境変数
- PMA_HOST: mysql(上記で作成したDBサーバのサービス名)
docker-compose.ymlのイメージ
version: '3' # 設定ファイルの文法のバージョン3を利用する。
services:
# 1. phpモジュールを搭載したapacheをインストールするコンテナ。
php:
# phpディレクトリのDockerfileに基づいてコンテナ作成
# ホストのhtmlディレクトリをphpコンテナのドキュメントルートと同期。
# ホストの8080番ポートをコンテナの80番ポートにフォワード(転送)
# このコンテナはmysqlコンテナに依存する
# 2. mysqlをインストールするコンテナ
mysql:
# mysql5.7の公式イメージをそのまま利用。
# mysqlの起動時に文字コードを指定
command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci --innodb-use-native-aio=0
# ホストOSのdbフォルダ内にmysqlコンテナのDBの内容を保存
# mysqlのルートパスワードを設定(環境変数名MYSQL_ROOT_PASSWORD)
# デフォルトで作成するデータベース名を設定(環境変数名MYSQL_DATABASE)
# デフォルトで作成するDBユーザー名を設定(環境変数名MYSQL_USER)
# デフォルトで作成するDBユーザーのパスワードを設定(環境変数名MYSQL_PASSWORD)
# タイムゾーンをAsia/Tokyoに設定(環境変数名MYSQL_PASSWORD)
# 3. phpmyadminをインストールするコンテナ
phpmyadmin:
# phpmyadmin/phpmyadminのコンテナイメージをそのまま利用
# 接続先DBホストをmysqlコンテナに接続(環境変数名PMA_HOST)
# mysqlコンテナに依存する
# ホストの8888番ポートをphpmyadminコンテナの80番ポートに転送