Dockerを用いたWordPress構築の手順書

Dockerとは
– アプリケーションをパッケージングし、「コンテナ」単位で実行するためのプラットフォーム。共通のプラットフォーム、共通のコンテナを利用することで、「自分のPCでは動いたのに、他の人のPCやサーバーでは動かない」といった環境問題を解消できる。

  • Dockerのメリット
    • 環境の分離・独立
    • 再現性
    • ポータビリティ
    • 環境構築が簡単
    • 比較的軽い
  • Dockerのインストール
    • 公式サイト
      https://www.docker.com/products/docker-desktop/
    • インストール時の設定
    • バージョン確認
      Command: docker --version docker compose version
    • 動作確認
      Comannd docker run hello-world
      以下のようなメッセージが出れば成功
      Hello from Docker! This message shows that your installation appears to be working correctly. ...
  • WordPressを構築するための手法の例
    • レンタルサーバー/ホスティングサービス
    • ローカル環境に直接インストール (XAMPP, MAMPなど)
    • Dockerを利用した構築
  • WordPressをDockerで構築するメリット
    • クリーンな環境を維持
    • テストや実験の容易さ
    • チーム開発の効率化
    • 本番環境との整合性
  • WordPressの構成
    • apatche一体型
      • メリット
      • デメリット
    • Nginx + PHP-FPM https://qiita.com/dalchan/items/20e758fe8646e7c58df8
      • メリット
      • デメリット
  • DockerでWordPressを構成する手順(Apache一体型)
    • 目的
      • Docker Compose により、WordPressイメージ(Apache版)とMySQL(データベース)の2つのコンテナを連携させる。
    • 作業用ディレクトリの作成
      • WordPressプロジェクト用のディレクトリをPC上に作成する。
        Command: mkdir wordpress cd wordpress
    • docker-compose.yml の作成
      Command: nano docker-compose.yml
    • docker-compose.ymlの記述
      • 以下の記述をdocker-compose.ymlへコピペする
version: '3.8' # Docker Composeのファイルフォーマットのバージョン

services:
  db: # データベースサービスの定義 (MySQL)
    image: mysql:5.7 # 使用するMySQLのDockerイメージとバージョン
    container_name: my_wordpress_db # コンテナ名(任意)
    volumes:
      - db_data:/var/lib/mysql # データの永続化設定
    restart: always # Docker起動時に常にコンテナを起動する
    environment:
      MYSQL_ROOT_PASSWORD: your_strong_root_password # MySQLのrootユーザーのパスワード (強固なものに変更)
      MYSQL_DATABASE: wordpress_db # WordPressが使用するデータベース名
      MYSQL_USER: wordpress_user # WordPressがデータベース接続に使用するユーザー名
      MYSQL_PASSWORD: your_strong_user_password # 上記ユーザーのパスワード (強固なものに変更)
    networks:
      - wpsite_network

  wordpress: # WordPressサービスの定義 (Apache一体型)
    image: wordpress:latest # 使用するWordPressのDockerイメージ(最新版のApache版)
    container_name: my_wordpress_app # コンテナ名(任意)
    depends_on: # 依存関係の定義 (dbサービスが起動してからwordpressサービスを起動)
      - db
    ports:
      - "8000:80" # ポートフォワーディング(ホストPCの8000番ポートをコンテナの80番ポートに接続)
    restart: always
    environment:
      WORDPRESS_DB_HOST: db:3306 # データベースホスト名(dbサービスのコンテナ名:ポート番号)
      WORDPRESS_DB_USER: wordpress_user # dbサービスで設定したユーザー名
      WORDPRESS_DB_PASSWORD: your_strong_user_password # dbサービスで設定したパスワード
      WORDPRESS_DB_NAME: wordpress_db # dbサービスで設定したデータベース名
    volumes:
      # ホストOSの現在のディレクトリにある `wp-content` フォルダを、
      # コンテナ内のWordPressの `wp-content` ディレクトリにマウントします。
      # これにより、ローカルでテーマやプラグインファイルを編集すると、即座にコンテナ内のWordPressに反映されます。
      - ./wp-content:/var/www/html/wp-content
      # (オプション) WordPressのルートディレクトリ全体をマウントする場合
      # - ./wordpress_files:/var/www/html # この場合、事前にwordpress_filesにWordPressコアファイルを展開する必要がある場合も
    networks:
      - wpsite_network

volumes: # 名前付きボリュームの定義(データの永続化用)
  db_data:

networks: # カスタムネットワークの定義
  wpsite_network:
    driver: bridge
  • DockerでWordPressを起動する
    • 前提
      • docker-compose.yml ファイルのあるディレクトリへ移動する
    • WordPressコンテナの起動
      Command: docker-compose up -d
    • コンテナの起動確認
      Command: docker-compose ps
  • WordPressの初期設定
    • WordPressへのアクセス
      • 上記の例ではhttp://localhost:8000
    • WordPressの初期設定画面

WordPressの停止と削除

  • WordPressの停止
    • docker-compose.yml があるディレクトリで以下のコマンドを実行
      Command: docker-compose down
  • WordPressの削除(初期化)
    • 同じく、以下のコマンドを実行する
      Command: docker-compose down -v