[Docker]素人がdocker-composeを使ってwordpressをインストール

こんにちは

今dockerについて少し勉強をしています。 なかなか面白そうですが理解するにはちょっと歳をとりすぎたかなと思っています。

今までLocal環境に簡単にwordpressを立ち上げるにはinstant wordpressなどを使う方法以外にはありませんでした。 私も幾度かチャレンジしたのですが、結構手間と設定が大変で時間もかかりました。

ところが、dockerを使うと簡単に立ち上げることができるようです。 と沢山のネット情報に書かれていました。

これに引き寄せられて、つい手を出してしまいました。

実際にはdocker-composeというものを使うのですが、使えばデータベース(mysql)とwordpressを組み合わせて、簡単にwordpressを立ち上げることが出来るようです。

なぜにしてそこまでwordpressを簡単に立ち上げて使いたいのか という理由ですが、公開中のブログの記事をローカル環境のwordpressに書いて、そこで構図など見栄えを調整して、upしたい

と言うことです。

そこでdockerについてまだ素人の私がどの程度簡単にwordpressを立ち上げることができるか、またできればデータは永続化したい。電源を頻繁にOFFするので、データが無くなってしまっては意味がありませんしね。 で簡単に出来るものをネットで調べてみました。

これならばなんとかなるかという記事をネットで見つけました。

 

DockerでのWordPress永続化

 

早速利用させていただきました。ただいくつかアレンジしてありますので参考にした記事とは少しだけ違いがあります。

docker-compose.yml

一部間違いがあったので修正しました。


version: "2"
services:
    wordpress:
        image: wordpress:latest
        ports:
            - "9000:80"
        depends_on:
            - db
        environment:
            WORDPRESS_DB_HOST: "db:3306"
        env_file: .env
        volumes:
           - 絶対パス/wp:/var/www/html/
    db:
        image: mysql:latest
        env_file: .env
        volumes:
            - 絶対パス/db:/var/lib/mysql
    phpmyadmin:
        depends_on:
            - db
    image: phpmyadmin/phpmyadmin
        environment:
            PMA_HOST: db
            PMA_PORT: 3306
        ports:
            - 8080:80
        volumes:
            - phpmyadmin_data:/sessions
volumes:
    phpmyadmin_data:

絶対パス: /home/ユーザ名/docker /wp:

相対パス; ./wp:

volumesでは相対パスは使えないようで、絶対パスにする必要があるとの情報がありました。でも最近記事を追加したのですが、相対パスでもOKでした。

.env

WORDPRESS_DB_NAME=wordpress
WORDPRESS_DB_USER=wordpress
WORDPRESS_DB_PASSWORD=wordpress

MYSQL_RANDOM_ROOT_PASSWORD=yes
MYSQL_DATABASE=wordpress
MYSQL_USER=wordpress
MYSQL_PASSWORD=wordpress 

もちろん自分に合わせて変更してください。

 

docker-compose up -d

$ docker-compose up -d

のコマンドで無事にwordpressを立ち上げることが出来るはずです。

はず というのは時々ホスト側に作られる

wp-content の中身が無い時があるのです。

すると

http://127.0.01:9000 で何も表示されない時があります。

これには困ってしまいました。

対策

絶対パスにすることで、ホスト側に作られるファイルの中身が無いと言うことは無くなったようです。

ただサーバによってはマウント、コピーが遅いものがあるため、必要に応じて以下を

仕方なくもう一回

$ docker-compose up -d
http://127.0.0.1:9000

で表示される時がある。 ホスト側にフォルダは出来るけどマウントが上手くいかない?ファイルのコピーが上手くいかない? などが原因だとは思うのですが。

今の所、mac, linuxの2機種で同じdocker-compose.ymlを使ってupして見ましたが、問題なく動くようです。

コンテナ側のファイル

さてコンテナ側のファイルは以下のコマンドで見ることができます。

$ docker exec -it docker_wordpress_1 bash

特にファイルが壊れている様子はないようです。

-rw-r--r--  1 www-data www-data  1627 Aug 29  2016 wp-comments-post.php
-rw-r--r--  1 www-data www-data  3886 Dec 25 22:46 wp-config-sample.php
-rw-r--r--  1 www-data www-data  3154 Dec 25 22:44 wp-config.php
drwxr-xr-x  8 www-data www-data   272 Dec 25 23:51 wp-content
-rw-r--r--  1 www-data www-data  3669 Aug 20 04:37 wp-cron.php
drwxr-xr-x 18 www-data www-data 12288 Nov 29 19:06 wp-includes
-rw-r--r--  1 www-data www-data  2422 Nov 21  2016 wp-links-opml.php

 

ホスト側のファイル

ホスト側のファイルは以下のようになっていました。

$ ls -la
total 16
drwxr-xr-x   7 kk  staff   238 12 26 16:31 .
drwxr-xr-x@  2 kk  staff    68 12 20 10:03 .
drwxr-xr-x+ 30 kk  staff  1020 12 21 14:23 ..
-rw-r--r--   1 kk  staff   191 12 20 15:15 .env
drwxr-xr-x@ 20 kk  staff   680 12 27 06:01 db
-rw-r--r--   1 kk  staff   730 12 26 16:26 docker-compose.yml
drwxr-xr-x@  8 kk  staff   272 12 27 06:03 wp-content

wp-contentの中を見て見ると

$ ls -la
total 8
drwxr-xr-x@  8 kk  staff  272 12 26 08:51 .
drwxr-xr-x   7 kk  staff  238 12 26 07:44 ..
-rw-r--r--@  1 kk  staff   28  1  9  2012 index.php
drwxr-xr-x  12 kk  staff  408 12 26 07:46 languages
drwxr-xr-x@  5 kk  staff  170 12 26 08:03 plugins
drwxr-xr-x@  8 kk  staff  272 12 26 07:51 themes
drwxr-xr-x   2 kk  staff   68 12 26 08:03 upgrade
drwxr-xr-x   3 kk  staff  102 12 26 07:50 uploads

内容は壊れてはいないようです。

今のところは動いています。

shutdown

ホストをshutdownして見ました。

docker for Macが立ち上がるには多少時間がかかりますが、立ち上がった後に

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

全てが消えていることがわかります。

そこで imagesを見て見ると

$ docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
wordpress               latest              34947222d667        3 days ago          410MB
phpmyadmin/phpmyadmin   latest              19c3875df23d        3 days ago          104MB
mysql                   latest              7d83a47ab2d2        2 weeks ago         408MB

と言うことで消えてはいないようです。

そこで再度

$ docker-compose up -d
Starting docker_db_1 ...
Starting docker_db_1 ... done
Starting docker_wordpress_1 ...
Starting docker_wordpress_1
Starting docker_phpmyadmin_1 ...
Starting docker_wordpress_1 ... done

で立ち上げて見ました。

$ docker ps
CONTAINER ID        IMAGE                   COMMAND                  CREATED             STATUS              PORTS                  NAMES
85b4ee962c95        phpmyadmin/phpmyadmin   "/run.sh phpmyadmin"     14 hours ago        Up 22 minutes       0.0.0.0:8080->80/tcp   docker_phpmyadmin_1
84548dc7836b        wordpress:latest        "docker-entrypoint..."   14 hours ago        Up 22 minutes       0.0.0.0:9000->80/tcp   docker_wordpress_1
31a2f9cb3d87        mysql:latest            "docker-entrypoint..."   14 hours ago        Up 22 minutes       3306/tcp               docker_db_1

無事に立ち上がったようです。

webで

http://127.0.0.1:9000

 

記事は下書きなので表示されません。

まずはホッと

コメント