LoginSignup
0
0

More than 3 years have passed since last update.

EC2でのDocker ComposeによるWordPressとMySQLとphpMyAdminの環境構築

Last updated at Posted at 2020-12-13

概要

AWSのEC2上でDocker Composeを使用することにより、WordPressとMySQLとphpMyAdminの環境を構築したので、すぐに見直せるようにメモしておきます。Dockerのインストール手順等は省いています。
EC2インスタンス接続までがまだ書けていないので、また別で投稿します。

GitHubで「docker wordpress」と検索し、star数の多いリポジトリをcloneさせていただきました。
https://github.com/nezhar/wordpress-docker-compose
環境構築していくにあたり、以下の"docker-compose.yml"ファイルと".env"ファイルを編集した後に実行します。最終的に実行するファイルは一番下に記載しています。

wordpress-docker-compose/docker-compose.yml
version: '3'

services:
  wp:
    image: wordpress:latest # https://hub.docker.com/_/wordpress/
    ports:
      - ${IP}:80:80 # change ip if required
    volumes:
      - ./config/php.conf.ini:/usr/local/etc/php/conf.d/conf.ini
      - ./wp-app:/var/www/html # Full wordpress project
      #- ./plugin-name/trunk/:/var/www/html/wp-content/plugins/plugin-name # Plugin development
      #- ./theme-name/trunk/:/var/www/html/wp-content/themes/theme-name # Theme development
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_NAME: "${DB_NAME}"
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: "${DB_ROOT_PASSWORD}"
    depends_on:
      - db
    links:
      - db

  wpcli:
    image: wordpress:cli
    volumes:
      - ./config/php.conf.ini:/usr/local/etc/php/conf.d/conf.ini
      - ./wp-app:/var/www/html
    depends_on:
      - db
      - wp

  pma:
    image: phpmyadmin/phpmyadmin
    environment:
      # https://docs.phpmyadmin.net/en/latest/setup.html#docker-environment-variables
      PMA_HOST: db
      PMA_PORT: 3306
      MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
    ports:
      - ${IP}:8080:80
    links:
      - db:db

  db:
    image: mysql:latest # https://hub.docker.com/_/mysql/ - or mariadb https://hub.docker.com/_/mariadb
    ports:
      - ${IP}:3306:3306 # change ip if required
    command: [
        '--default_authentication_plugin=mysql_native_password',
        '--character-set-server=utf8mb4',
        '--collation-server=utf8mb4_unicode_ci'
    ]
    volumes:
      - ./wp-data:/docker-entrypoint-initdb.d
      - db_data:/var/lib/mysql
    environment:
      MYSQL_DATABASE: "${DB_NAME}"
      MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"

volumes:
  db_data:
wordpress-docker-compose/.env
IP=127.0.0.1
DB_ROOT_PASSWORD=password
DB_NAME=wordpress

手順

レポジトリのクローン

最初にEC2インスタンスにSSH接続して、レポジトリをクローンします。

git clone  https://github.com/nezhar/wordpress-docker-compose.git

編集前ファイル

"wordpress-docker-compose"ディレクトリができたのを確認できるので、その中のファイルの"docker-compose.yml"を編集します。編集しないまま実行してしまうと、ループバックアドレス"IP=127.0.0.1"が設定されており、このままではアクセスしても見れません。そのため、以下のように"${IP}:"を削除します。削除する場所が"web", "pma", "db"サービスの3箇所あります。

docker-compose.yml
#変更前
ports:
      - ${IP}:80:80
        ︙
      - ${IP}:8080:80
        ︙
      - ${IP}:3306:3306

#変更後
ports:
      - 80:80
        ︙
      - 8080:80
        ︙
      - 3306:3306

また、phpMyAdminのログイン入力を省略するために、PMA_USERとPMA_PASSWORDを追記します。

wordpress-docker-compose/docker-compose.yml
PMA_USER: root
PMA_PASSWORD: "${DB_ROOT_PASSWORD}"

"pma"および"db"サービスに下記を追記します。

wordpress-docker-compose/docker-compose.yml
MYSQL_USER: "${DB_USER}"
MYSQL_PASSWORD: "${DB_PASSWORD}"

".env"ファイルに以下を追記します。

wordpress-docker-compose/.env
DB_USER=wordpress
DB_PASSWORD=wordpress

編集後ファイル

編集後の"docker-compose.yml"ファイルと".env"ファイルが以下の通りです。

wordpress-docker-compose/docker-compose.yml
version: '3'

services:
  wp:
    image: wordpress:latest # https://hub.docker.com/_/wordpress/
    ports:
      - 80:80 # change ip if required
      #- ${IP}:80:80 # change ip if required
    volumes:
      - ./config/php.conf.ini:/usr/local/etc/php/conf.d/conf.ini
      - ./wp-app:/var/www/html # Full wordpress project
      #- ./plugin-name/trunk/:/var/www/html/wp-content/plugins/plugin-name # Plugin development
      #- ./theme-name/trunk/:/var/www/html/wp-content/themes/theme-name # Theme development
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_NAME: "${DB_NAME}"
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: "${DB_ROOT_PASSWORD}"
    depends_on:
      - db
    links:
      - db

  wpcli:
    image: wordpress:cli
    volumes:
      - ./config/php.conf.ini:/usr/local/etc/php/conf.d/conf.ini
      - ./wp-app:/var/www/html
    depends_on:
      - db
      - wp

  pma:
    image: phpmyadmin/phpmyadmin
    environment:
      # https://docs.phpmyadmin.net/en/latest/setup.html#docker-environment-variables
      PMA_HOST: db
      PMA_PORT: 3306
      PMA_USER: root #add
      PMA_PASSWORD: "${DB_ROOT_PASSWORD}" #add
      MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
      MYSQL_USER: "${DB_USER}" #add
      MYSQL_PASSWORD: "${DB_PASSWORD}" #add
    ports:
      - 8080:80
      #- ${IP}:8080:80
    links:
      - db:db

  db:
    image: mysql:latest # https://hub.docker.com/_/mysql/ - or mariadb https://hub.docker.com/_/mariadb
    ports:
      - 3306:3306 # change ip if required
      #- ${IP}:3306:3306 # change ip if required
    command: [
        '--default_authentication_plugin=mysql_native_password',
        '--character-set-server=utf8mb4',
        '--collation-server=utf8mb4_unicode_ci'
    ]
    volumes:
      - ./wp-data:/docker-entrypoint-initdb.d
      - db_data:/var/lib/mysql
    environment:
      MYSQL_DATABASE: "${DB_NAME}"
      MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
      MYSQL_USER: "${DB_USER}" #add
      MYSQL_PASSWORD: "${DB_PASSWORD}" #add
volumes:
  db_data:
wordpress-docker-compose/.env
IP=127.0.0.1
DB_ROOT_PASSWORD=password
DB_NAME=wordpress
DB_USER=wordpress
DB_PASSWORD=wordpress

コンテナ起動

コンテナを起動します。もし下記コマンド実行後にファイルを編集し直したら、再度下記コマンドを実行してください。

docker-compose up -d

WordPress起動

パブリックDNSにアクセスしてください。うまく行けば、WordPressが表示されるはずです。
(例)http://ec2-・・・・・・.ap-northeast-1.compute.amazonaws.com/

また、phpMyAdminへは下記のようにurlの後ろに":8080"を付けてアクセスしてください。
(例)http://ec2-・・・・・・.ap-northeast-1.compute.amazonaws.com:8080

参考

[参考] https://github.com/nezhar/wordpress-docker-compose
[参考] https://docs.docker.com/compose/wordpress/?_fsi=5qcfFUpc

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0