Skip to content

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 スクリプトで初期化と起動を制御。
  • 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
  • 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 (または環境変数から取得できないため固定/あるいは引数化を検討可だが、ここではローカル要件に合わせて固定)
  • 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警告: 自己署名証明書のため警告が表示される(想定通り)。
      • SSL Warning
      • SSL Details
    • WordPressトップページ: インストール画面ではなくトップページが表示された。
      • WordPress Top
      • 補足: srcs/requirements/wordpress/tools/setup.sh 内で wp core install を実行済みのため、手動インストールはスキップされ、即座に利用可能な状態となっている。

Released under the MIT License.