WEB/システム/IT技術ブログ

Docker ComposeでWordPress開発環境を構築する

Docker ComposeでWordPress開発環境を構築します。

今回、以下の環境に構築しました。

  • Windows 10 Home
  • Docker Engine v20.10.14

開発環境の構成はWordPress、DBはMariaDB、DB参照用にphpMyAdminです。
WordPressのプラグイン、アップロード画像やテンプレートを含むフォルダ「wp-content」はgitで管理しています。
WordPressは本番環境に合わせて、ドキュメントルートからサブフォルダ「wp」に展開します。

docker-compose.ymlを用意する

WordPress開発環境構築用に以下の「docker-compose.yml」を用意します。ファイル「docker-compose.yml」はルートに配置します。

version: '3.8'

services:
  wordpress:
    image: wordpress:5.9.3
    ports:
      - 8000:80
    depends_on:
      - db
    working_dir: /var/www/html/wp
    volumes:
      - ./public_html/wp/wp-content:/var/www/html/wp/wp-content
      - ./public_html/.htaccess:/var/www/html/.htaccess
      - ./public_html/index.php:/var/www/html/index.php
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: ${MYSQL_DATABASE}
      WORDPRESS_DB_USER: ${MYSQL_USER}
      WORDPRESS_DB_PASSWORD: ${MYSQL_PASSWORD}

  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    depends_on:
      - db
    ports:
      - 8888:80
    environment:
      PMA_HOST: db
      PMA_USER: ${MYSQL_USER}
      PMA_PASSWORD: ${MYSQL_PASSWORD}

  db:
    image: mariadb:10.5
    volumes:
      - db-volume:/var/lib/mysql
    environment:
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      TZ: Asia/Tokyo

volumes:
  db-volume:


解説します。
今回、WordPress、phpMyAdmin、MariaDBの3つのコンテナを用意します。

version: Docker Composeのバージョンを指定します。Docker Engineのバージョンによりますが、なるべく最新のものを使用します。
image: それぞれイメージとバージョンを指定しています。例えば「wordpress:5.9.3」はWordPress v5.9.3、「phpmyadmin/phpmyadmin:latest」はphpMyAdminの最新版を指定しています。
ports: 左にホストのポート、右にコンテナのポートを指定します。今回の場合「http://localhost:8000」でWordPressコンテナに、「http://localhost:8888」でphpMyAdminコンテナにアクセスできます。
depends_on: コンテナ間の依存関係を定義します。今回の場合、MariaDBを起動した後に、WordPressとphpMyAdminを起動します。逆に、WordPressとphpMyAdminを停止した後に、MariaDBを停止します。
working_dir: WordPressを展開するディレクトリを指定します。デフォルトはドキュメントルート「/var/www/html/」ですが、今回はサブディレクトリ「wp」を指定しています。
volumes: ホストファイルをマウントします。
今回、フォルダ「wp-content」はコンテナ内ではなく、ホスト側でgit管理しているソースをマウントします。また、WordPressはフォルダ「wp」を指定しましたが、ドキュメントルートには「.htaccess」と「index.php」が必要なので、ホストで管理しているファイルをマウントします。
さらに「db-volume:/var/lib/mysql」とする事で、DBのデータをホストに保存するようにします。「db-volume」は任意で命名します。こうすることで、一度コンテナを破棄しても、コンテナ再起動時に以前のデータを維持することができます。
environment: コンテナの環境変数を指定します。さらにルートにファイル「.env」を用意する事で、環境依存変数を管理することができます。
phpMyAdminコンテナにPMA_HOST、PMA_USER、PMA_PASSWORDを指定する事で、ブラウザでphpMyAdminにアクセスした際の認証をパスする事ができます。

「.env」のサンプルです。

# MySQL
MYSQL_ROOT_PASSWORD=xxxxxxxx
MYSQL_DATABASE=xxxxxxxx
MYSQL_USER=xxxxxxxx
MYSQL_PASSWORD=xxxxxxxx

Docker Composeを実行

以下のコマンドで「docker-compose.yml」に記述された内容が実行され、コンテナが起動します。オプション「-d」を指定することで、バックグラウンドで実行します。

> docker compose up -d

以下のコマンドでコンテナを停止、削除します。

> docker compose down
B!

Comment

コメントはありません

コメントする

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Monthly Archives