「PHP環境」、「WordPress」をDockerで構築(初心者)

PHP環境をDockerで構築する手順

1)Dockerfileの作成

  • プロジェクトディレクトリ内に「Dockerfile」を作成します。
  • PHPのイメージをベースにすることで、PHP環境を構築します。

▽Dockerfile

FROM php:8.0-cli
RUN docker-php-ext-install pdo_mysql

2)docker-compose.ymlの作成

  • プロジェクトディレクトリ内に「Dockerfile」を作成します。
  • 複数のサービスを管理しやすくするために、docker-compose.ymlファイルを作成
  • このファイル内で、PHPサービスを定義し、ポートやボリュームを設定します。

docker-compose.yml

version: '3'

services:
    php:
        image: php:7.2-apache
        volumes:
            - .:/var/www/html
        ports:
            - 8000:80
        container_name: php7.2-trial2
    mysql:
        image: mysql:5.7
        volumes:
            - /var/lib/mysql
        environment:
            - MYSQL_ROOT_PASSWORD=root
            - MYSQL_DATABASE=test
            - MYSQL_USER=test
            - MYSQL_PASSWORD=test
        container_name: mysql5.7-trial2

<コード内容>

PHPサービス

  • イメージphp:7.2-apache。PHP 7.2とApacheサーバーを含む公式PHPイメージを使用します。
  • ボリューム: ホストの現在のディレクトリ(.)をコンテナ内の/var/www/htmlにマウントします。これにより、ホストのディレクトリがApacheのドキュメントルートとして機能します。
  • ポート: ホストの8000ポートをコンテナの80ポートにマッピングします。これにより、ホストマシンの8000ポート経由でアクセスできるようになります。
  • コンテナ名php7.2-trial2。この名前はDocker内でこのコンテナを識別するために使用されます。

MySQLサービス

  • イメージmysql:5.7。MySQL 5.7を含む公式MySQLイメージを使用します。
  • ボリューム/var/lib/mysql。これは、MySQLデータを永続化するために使用されるボリュームです。ただし、この定義ではホストのパスが指定されていないため、匿名ボリュームとして作成されます。
  • 環境変数:
    • MYSQL_ROOT_PASSWORD=root:rootユーザーのパスワードをrootに設定します。
    • MYSQL_DATABASE=test:起動時にtestデータベースを作成します。
    • MYSQL_USER=testtestユーザーを作成します。
    • MYSQL_PASSWORD=testtestユーザーのパスワードをtestに設定します。
  • コンテナ名mysql5.7-trial2。この名前はDocker内でこのコンテナを識別するために使用されます。

3)ビルドと実行

Dockerfileとdocker-compose.ymlが用意できたら、コマンドを使用してイメージをビルドし、コンテナを起動します。

docker-compose up --build

コマンドを実行すると、Dockerは「Dockerfile」に基づいてイメージをビルドし、「docker-compose.yml」に従ってコンテナを起動します。これにより、PHPが使える環境が構築されます。

▽「docker desktop」の画面より確認ができました

WordPress環境をDockerで構築

1)作業フォルダを作成

2)1)内に「docker-compose.yml」を作成

version: "3.7"
services:
 db:
  image: mysql:8.0
  container_name: mysql8
  restart: always
  environment:
    MYSQL_ROOT_PASSWORD: password # rootユーザのパスワード
    MYSQL_DATABASE: db_local # WordPress用データベース名
    MYSQL_USER: wp_user # WordPress用データベース接続ユーザ名
    MYSQL_PASSWORD: password # WordPress用データベース接続パスワード
 WordPress:
  image: wordpress:latest
  container_name: wordpress
  restart: always
  depends_on:
     - db
  ports:
     - 10090:80
  environment:
    WORDPRESS_DB_HOST: db:3306 # データベースサーバ名:ポート番号
    WORDPRESS_DB_USER: wp_user # WordPress用データベース接続ユーザ名(dbの内容に合わせる)
    WORDPRESS_DB_PASSWORD: password # WordPress用データベース接続パスワード(dbの内容に合わせる)
    WORDPRESS_DB_NAME: db_local # WordPress用データベース名(dbの内容に合わせる)
    WORDPRESS_DEBUG: 1 # デバッグモードON
  volumes:
     - ./html:/var/www/html
 phpmyadmin:
  image: phpmyadmin/phpmyadmin:latest
  container_name: phpmyadmin_ingrid
  restart: always
  depends_on:
     - db
  ports:
     - 10099:80

3)作業ディレクトリにて下記コマンド

docker-compose up -d

ボリュームマウントの概念

Dockerコンテナは、デフォルトで隔離された環境を提供します。これにより、コンテナ内のファイルシステムはホストマシンから独立しています。しかし、多くの場合、ホストマシン上のファイルやディレクトリをコンテナ内で直接利用したい場合があります。このような場合にボリュームマウントが使用されます。

ボリュームマウントの構文は以下の通りです

volumes:
  - <ホストのパス>:<コンテナのパス>

多少時間がかかるかもしれません。

4)「Docker Desktop」で確認

参考サイト

【入門】Dockerで環境構築|WordPress環境をローカルPCに作ろう!
https://coosy.co.jp/blog/docker-environment