ご質問・お見積り等お気軽にご相談ください
お問い合わせ

DockerでWordPressの環境を構築する(Windows)

DockerでWordPressの環境を構築する(Windows)

現在進行中のプロジェクトでDockerでWordpress環境の構築をすることがあったので方法を記します。

Dockerとは?

DockerとはDocker社が開発しているコンテナ型の仮想環境を作成し共有するためのプラットフォームです。
ミドルウェアのインストールや各種環境設定を文字コードとして管理するのでチーム内のだれもが同じ環境で作業することができます。

Docker for Windowsのインストール

Dockerをインストールしていない人はダウンロードページ内 Download for WindowsリンクよりインストーラーをダウンロードしてDockerをインストールしてください。

dockercompose.ymlファイルを作成する。

Dockerで環境を構築する準備として環境の情報が記載されたdockercompose.ymlファイルを作成しましょう。
下記設定内容でmysql,phpmyadmin,wordpressの3つのコンテナが構築されます。
 


version: '3'
services:
  mysql: #コンテナ名
    image: mysql:5.7
    volumes:
      - ./mysql:/docker-entrypoint-initdb.d
      - ./mysql/db-data:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=password
      - MYSQL_DATABASE=wordpress_db
  phpmyadmin: #コンテナ名
    image: phpmyadmin/phpmyadmin
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=mysql
      - PMA_USER=root
      - PMA_PASSWORD=password
    links:
      - mysql
    ports:
      - 1234:80
  wordpress: #コンテナ名
    image: wordpress:latest
    depends_on:
      - mysql
    ports:
      - 80:80
    volumes:
      - ./wordpress:/var/www/html/
    environment:
      - WORDPRESS_DB_HOST=mysql
      - WORDPRESS_DB_PASSWORD=password
      - WORDPRESS_DB_NAME=wordpress_db

 

各種入力情報の詳細

version インストールされているDockerComposeのバージョンを記述
コンテナ名 コンテナ名は各コンテナから見た時のHOST名としても扱えるという特性があります。
image 指定したバージョンで各環境にインストールされます。
ports 各環境のport番号を指定可能
volumes 左辺がbuild後に生成されるフォルダとなり右辺の環境パスと同期します。
environment 各種環境変数

 
作業フォルダ内にdockercompose.ymlが存在する状態で下記コマンドを入力することで環境を構築、また起動できます。
 


//環境の構築
$ docker-compose build

//コンテナの構築、及び起動
$ docker-compose up

//コンテナの停止
$ docker-compose down

動作確認

docker-compose upが実行されているタイミングでhttp://localhostにアクセスしてみると
 

 
wordpressの初期インストール画面が表示されるかと思います。
 
また、http://localhost:1234へアクセスすると
 

 
phpmyadminの管理画面が表示されます。
 
また、コンテナ内をコマンドから操作する際は
 


docker exec -it コンテナ名 bash

 
と入力することでコンテナ内でコマンドを実行できます。
 
 
今まで、環境構築や環境の違いで思わぬ時間を取られてしまうことがたびたび発生していたので、
Dockerで誰でも簡単に環境を構築でき、
チーム内での環境の差異がない状態で作業を進めることができるというのは、
なかなかのメリットになるかと思います。