Docker Infrastructure 実装ログ
概要
本プロジェクトの各サービス実装プロセスの記録。
1. Infrastructure (#17)
実施内容
docker-compose.yml:
nginx,mariadb,wordpressサービスの定義。inceptionブリッジネットワークの定義。wordpress,mariadb用のローカルボリューム定義(bind mount先:/home/debian/data/)。- 依存関係: Nginx -> WordPress -> MariaDB。
- 再起動ポリシー:
restart: always。
.env:
- 環境変数テンプレートに具体的な値を設定(開発用)。
- MySQL, WordPressの認証情報、ドメイン名 (
local.dev) を定義。
ディレクトリ:
- ボリュームマウント用のディレクトリを作成:
/home/debian/data/wordpress,/home/debian/data/mariadb。
- ボリュームマウント用のディレクトリを作成:
決定事項
- Bind Mount: データの永続性とホスト側からのアクセス容易性のため、名前付きボリュームのドライバオプションでBind Mountを使用。
- Container Names: サービス名と同一 (
nginx,mariadb,wordpress) に固定し、DNS解決を単純化。
2. MariaDB (#19)
実施内容
Dockerfile:
- Base:
debian:bullseye - Install:
mariadb-server - Socket Directory:
/var/run/mysqldを作成し権限設定。 - Entrypoint:
initial_db.shスクリプトで初期化と起動を制御。
- Base:
Config (
50-server.cnf):bind-address = 0.0.0.0: 他のコンテナからの接続を許可。datadir = /var/lib/mysql: データ永続化先。socket = /var/run/mysqld/mysqld.sock: ソケット通信用。
Script (
initial_db.sh):- 初回起動時にデータベース (
wordpress) とユーザー (user) を作成。 - 環境変数 (
MYSQL_DATABASE,MYSQL_USER,MYSQL_PASSWORD,MYSQL_ROOT_PASSWORD) を使用。 - 初期化完了後、
mysqldをフォアグラウンドで実行。
- 初回起動時にデータベース (
3. WordPress (#20)
実施内容
Dockerfile:
- Base:
debian:bullseye - Install:
php7.4-fpm,php7.4-mysql,mariadb-client(接続確認用),wget. - Workdir:
/var/www/html
- Base:
Config (
www.conf):listen = 9000: Nginxからの接続を受け付ける。clear_env = no: 環境変数をPHPプロセスに渡す(DB接続情報など)。
Script (
setup.sh):wp-cliをダウンロードして使用。wp core download,config create,core install,user createを自動実行。- 実行前に
sleep 10でDB起動を待機(簡易的な待機処理)。 - 最後は
php-fpm7.4 -Fでフォアグラウンド実行。
4. Nginx (#18)
実施内容
Dockerfile:
- Base:
debian:bullseye - Install:
nginx,openssl - SSL: ビルド時に
openssl reqで自己署名証明書 (inception.crt,inception.key) を生成。 - Subject:
/C=JP/ST=Tokyo/L=Minato/O=MyOrganization/OU=Student/CN=local.dev(または環境変数から取得できないため固定/あるいは引数化を検討可だが、ここではローカル要件に合わせて固定)
- Base:
Config (
nginx.conf):listen 443 ssl: HTTPSのみ許可。ssl_protocols TLSv1.2 TLSv1.3: 指定のプロトコルのみ許可。server_name local.dev: 指定のドメイン。location ~ \.php$:fastcgi_pass wordpress:9000へ転送。
5. 統合検証
実施内容
クリーン起動テスト:
docker compose down -vでボリュームごと削除し、docker compose up --build -dで再構築。- 全コンテナ (
nginx,mariadb,wordpress) が正常にUp状態になることを確認。 - ログにて、MariaDB初期化 -> WordPressインストール -> Nginxプロキシ待機 の順序依存が解消されていることを確認。
接続確認:
curl -k -I https://localhost: HTTP 200 OK。Nginx経由でWordPressに到達。curl -I http://localhost: 接続拒否(ポート443のみ開放のため)。
結論:
- Docker Infrastructureの必須パートのローカル実装は完了し、要件を満たしていることを確認。
手動検証 (Host OS: macOS)
- 実施日: 2026-01-29
- 対象:
https://local.dev(192.168.65.11) - 結果:
- SSL警告: 自己署名証明書のため警告が表示される(想定通り)。
- WordPressトップページ: インストール画面ではなくトップページが表示された。

- 補足:
srcs/requirements/wordpress/tools/setup.sh内でwp core installを実行済みのため、手動インストールはスキップされ、即座に利用可能な状態となっている。
- SSL警告: 自己署名証明書のため警告が表示される(想定通り)。

