mbp9v9a8418_tp_v

DockerでWordPress実行環境を構築、通常の開発が出来る状態をゴールとします。
(Dockerの基礎知識に関してはコチラのサイトが分かりやすいです。)

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を作成。

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 を作成。

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

6.ブラウザからアクセスする

下記コマンドで接続先のIPを確認します。

docker-machine ip

http://{IP}
wordpressの設定画面が表示されます。
wp

7.DBにアクセスする

今回はSequel Proでアクセスします。

sequel_pro

8.クリーンアップ

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

docker-compose down

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

docker-compose down --volumes

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

http://qiita.com/suin/items/3a0361102af83d0b69aa

Share on Facebook0Tweet about this on TwitterShare on Google+0Share on Tumblr0Share on Yummly0