DockerでWordPressとphpMyAdminとMySQLを作成

2021年1月12日

Dockerをあまり触ったことのない初心者ですが、Dockerが便利だと聞きDocker ComposeでWordPressとphpMyAdminの環境を作ってみたいと思います。

Docker Composeの環境

  • CentOS 7
  • Docker 19.03
  • Docker Compose 1.26

Docker Composeのインストール

Docker Composeのインストールは次のサイトの手順に従います。

上記サイトの内容を要約すると次の通りです。

1.インストール

curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

2.インストールしたコマンドに権限を与える

chmod +x /usr/local/bin/docker-compose

3.確認

docker-compose -v

YAMLファイルの作成

Docker ComposeはYAMLファイルを元に環境を構築してくれます。中身はこんな感じです。

version: "3.1"
 
volumes:
  vol_mysql:
networks:
  wordpress_network:
services:
  db:
    image: mysql:5.7
    container_name: "mysql"
    volumes:
      - vol_mysql:/var/lib/mysql
    networks:
      - wordpress_network
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: mysql
 
  wordpress:
    image: wordpress:latest
    container_name: "my_wordpress"
    volumes:
      - ./wordpress/html:/var/www/html
      - ./php/php.ini:/usr/local/etc/php/conf.d/php.ini
    networks:
      - wordpress_network
    restart: always
    depends_on:
      - db
    ports:
      - "8080:80"
    environment: # 環境変数の指定
      WORDPRESS_DB_PASSWORD: mysql
 
  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    container_name: "phpmyadmin"
    restart: always
    depends_on:
      - db
    ports:
      - "8888:80"
    networks:
      - wordpress_network

YAMLの注意点

yamlを実行する際にいくつか注意点(私が失敗した点)があります。

volumeは予め作らなくていい

yamlファイルにvolume名を指定しておけばdocker composeが勝手にvolumeを作成します。但し名前に接頭辞(ディレクトリ名)がつきます。

  • {接頭辞(ディレクトリ名)}_{指定したvolume名}

networkは予め作らなくていい

yamlファイルにnetwork名を指定しておけばdocker composeが勝手にnetworkを作成します。但し名前に接頭辞(ディレクトリ名)がつきます。

  • {接頭辞(ディレクトリ名)}_{指定したnetwork名}

mysqlのコンテナ名は"mysql"

MySQLのコンテナ名は「mysql」としてください。理由は、WordPressのDockerイメージでは、MySQLへの接続先の指定として、「mysql」というホスト名を指定しているためです。

Docker入門(第五回)〜コンテナ間通信〜

確認の為にmysqlのコンテナ名を"mysql"以外で試しましたが、つながりませんでした。

mysqlは5.xを使う

(2020/08/01時点)
mysqlの最新バージョンは8.0ですがwordpressが対応していないため、5.xを使いましょう。

dockerでmysqlのコンテナを作成しない

docker-composeを試す前にdockerでコンテナを作成したらdocker-composeがうまく機能しませんでした。

その後コンテナを全て削除したらdocker-composeが起動しました。

コンテナ作成・起動

それではコンテナを作成して起動してみましょう。次のコマンドを入力します。

コマンド解説

docker-compose up -d

少し時間がかかって次のようなメッセージが出れば完了です。

Creating mysql ... done
Creating my_wordpress ... done
Creating phpmyadmin   ... done

動作確認

最後に動作確認です。ワードプレスはポート番号が8080なので次のように入力します。

IPアドレス:8080

phpMyAdminのポート番号は8888なので次の通りです。

IPアドレス:8888

それぞれ画面が表示されれば完了です。

Docker

Posted by Bright_Noah