LoginSignup
7
13

More than 1 year has passed since last update.

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

Last updated at Posted at 2018-03-13

ゴール

DockerでWordPress実行環境を構築、通常の開発が出来る状態をゴールとします。

なぜこの記事を書いたか

Docker公式サイトをはじめいくつか同じような事を解説しているサイトがありましたが、個人的に下記の点が足りませんでした。

・画像(Media)がアップロード出来ない。

・PhpMyAdminなどのコンソールでDB(MySQL)にアクセス出来ない。

・ファイル同期出来ない(ホストPC(本体)とゲストPC(Docker container)でマウントの設定が出来ていない。)

これらがクリアー出来ていないと開発/運用に支障があるので色々調べた結果をまとめました。

前提環境

・mac OS X 10.9.5
・docker-compose を使える。

構築手順

1.プロジェクト フォルダを作成。
今回は下記のパスに「docker_wp」というフォルダを作成。
/Users/user/develop/docker_wp/

2.ターミナルで移動

cd /Users/user/develop/docker_wp/

3.書き込み権限のあるWordPress用Docker image を作成
(このステップを行う事でMediaのアップロードが可能になります。)

・下記内容でDockerfileを作成。

dockerfile
FROM wordpress:latest

RUN usermod -u 1000 www-data \
    && groupmod -g 1000 www-data

「FROM wordpress:latest」として最新のWordPress用imageを元にしています。

・下記コマンドでimageを作成

docker build -t wordpress:auth .

「wordpress:auth」でimageの名前とタグを指定しています。

実行後「docker images」コマンドで正常にimageが作成されているか確認します。

4.下記内容でdocker-compose.yml を作成。

docker-compose.yml

version: '2'

services:
   db:
     image: mysql:5.7
     ports:
       - "3306:3306"     
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: wordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress
     privileged: true

   wordpress:
     depends_on:
       - db
     image: wordpress:auth
     ports:
       - "80:80"
     restart: always
     working_dir: /var/www/html
     volumes:
       - /Users/user/develop/docker_wp/:/var/www/html/
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_PASSWORD: wordpress
     privileged: true
volumes:
    db_data:

赤字の部分に注目して頂きたいのですがdbのportを指定する事でPhpMyAdminなどの外部からの接続が可能になります。
またDBのvolumesを指定する事でホストPC(mac)とdockerコンテナー間のファイル同期が可能となります。

5.コンテナー作成〜稼働

docker-compose up -d

完了後、「docker ps」にて作成したコンテナーが動いているか確認します。
このように2つのコンテナーが起動していればOKです。

>docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
5a9d3770ee0d        wordpress:auth      "docker-entrypoint.sh"   3 minutes ago       Up 3 seconds        0.0.0.0:80->80/tcp       dockerwp_wordpress_1
3980a9064e38        mysql:5.7           "docker-entrypoint.sh"   3 minutes ago       Up 5 seconds        0.0.0.0:3306->3306/tcp   dockerwp_db_1

5-2. wp-config.php のDB接続情報を修正する
上記の docker-compose.yml の例でいくと下記の通りに設定します

define( 'DB_NAME', getenv_docker('WORDPRESS_DB_NAME', 'wordpress') );
define( 'DB_USER', getenv_docker('WORDPRESS_DB_USER', 'root') );
define( 'DB_PASSWORD', getenv_docker('WORDPRESS_DB_PASSWORD', 'wordpress') );

6.ブラウザからアクセスする
下記でwordpressの設定画面が表示されます。

http://localhost

ここまでくれば環境構築は無事完了です!

7.DBにアクセスする
今回はSequel Proでアクセスします。

8.クリーンアップ
開発が完了した時などDockerを終了する時は下記コマンドでコンテナーを削除します。

docker-compose down

コンテナーを削除してもDBデータは残っています。
下記コマンドでDBデータも全て削除可能です。

docker-compose down --volumes

<参考サイト>
https://docs.docker.com/compose/wordpress/

7
13
1

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
7
13