[Docker] docker-composeを使ったwordpressのインストールでの問題

こんにちは

しばらくブログの更新を怠っていました。 といっても何もしていなかった訳ではなくdockerというものに興味があったので色々。

dockerについて解説する気は全くありませんが、dockerを使ってブログ(wordpress)を立ち上げることについて調べていました。

ネット上に沢山の記事が投稿されていて、どれを使ったらいいのか悩んでしまい片っ端から記事通りにやってみたのですが、うまくいきませんでした。 なぜだか色々ありました。

参考にした記事

これは動きそうだという記事を見つけましたので、ここで紹介したいと思います。 ただコマンドのいくつかに違いがあり数時間悩むことも。

まず参考にしたブログを紹介します。

DockerでWordPress環境を構築する

ここに書かれているのはMac上で動作するdockerを使ってwordpress環境を構築するものです。

記事に書かれた通りにしていけば、ほぼ間違いなくwordpressとphpmyadminがインストールされ動作します。

wordpressを開くには http://127.0.0.1 です。localhostでも開くと書いてありましたが、私の使っているMacでは開きませんでした。

phpmyadminは、http://127.0.0.1:8080 で開くことができます。

初心者にとって簡単にdockerを使いこなすために考えることは、公開されている記事を参考にすることです。

が、ソフトウェアのバージョンアップが早い今日にあっては、数年前、あるいは半年前の記事がそのまま使えるという保証はありません。

参考にした記事は作ったデータが、dockerを終わらせると消えてしまいます。 したがって記事のデータを残すための方法についても紹介されています。

Docker上のWordPressデータのバックアップ&リストア

ただいくつかのコマンドで注意することがあります。

「Volumeの内容を見る」の記事の中でコマンドが出てきますが、記事を単にコピーしてペーストすると不要なコードが混じっているようでエラーになってしまいました。

例えば以下のようなエラーです。

docker: invalid reference format.
See 'docker run --help'.

このエラーの意味がよくわかりませんでした。

「これはコピー&ペーストではなく、キーボードを使って記事に書いてある通りに打ち込むことでエラーを回避できます。」
ということが分かるまで数時間を要しました。パソコンを使う上での基本かもしれません。

さらに進むと、それでもエラーが出たのですが、

unknown shorthand flag: 'r' in -rm
See 'docker run --help'.

これは docker run のヘルプを見るように指示がありましたので調べたところ、

「 -rm --> --rm 」

とする必要があることがわかりました。
これらは、多分dockerのバージョンなどの違いによるものだと思います。

私のブログでも、後でその記事の通りにしてみたら動かなかったため、調べたところ幾つかの入力ミスが見つかったことがありました。記事に対するケアを続けることは大変ですが、正確な情報を伝えるためには必要なことだと思います。

あと

$ docker start -i wp_www_dc

で-iをつけているとwp_www_dcというコンテナの中に入ってしまうようで「-i」は外しました。

なお「wp_www_dc」という名前のコンテナに入るためには次のようにします。


$ docker exec -it wp_www_dc /bin/bash

抜け出すには「exit」です。

バックアップ


$ docker run --rm --volumes-from wp_www-dc -v $(pwd):/backup ubuntu tar cvf /backup/backup_www.tar /www_data

では、backup_www.tarというバックアップ・ファイルができましたが、/backupにちゃんとマウントしていないようで、/backupの中にファイルは出来ていませんでした。

データベースは


$ docker run --rm --volumes-from wp_db_dc -v $(pwd):/backup ubuntu tar cvf /backup/backup_db.tar /db_data

となります。

リストア

圧縮されたバックアップ・ファイルをリストアするには、まずコンテナを作るようです。


$ docker run -it --name wp_www_dc2 -v wordpress_www_data:/www_data ubuntu /bin/bash

続けて


$ docker start wp_www_dc2

としてコンテナ(wp_www_dc2)を走らせます。

$ docker ps

で確認してください。

さらに


$ docker run -it --name wp_db_dc2 -v wordpress_db-data:/db_data ubuntu /bin/bash

$ docker start wp_db_dc2

でコンテナ( wp_db_dc2 )を走らせます。

このような手続きをした後で、リストアを行います。

ここで注意したいのは、バックアップをした時に出来たtarファイルは/backupの中に出来なかったのですが、リストアの時には、tarファイルを/backupの中にコピーして置かなければなりません。そうしないとファイルが無いと言って怒られてしまいます。

リストアは


$ docker run --rm --volumes-from wp_www_dc2 -v $(pwd):/backup ubuntu bash -c "cd /www_data && tar xvf /backup/backup_www.tar --strip 1"

同様に


$ docker run --rm --volumes-from wp_db_dc2 -v $(pwd):/backup ubuntu bash -c "cd /db_data && tar xvf /backup/backup_db.tar --strip 1"

となります。

上記のコマンドは修正済みですがリストアのコマンドの中にもミスがあり


--strip

とする必要がありました。

終わりに

Macで作ったwordpress環境を、そのままLinuxマシンの上で作るには、

  • docker-compose.yml
  • Dockerfile
  • backup_www.tar
  • backup_db.tar

があれば同じものを作ることができます。

backup_db.tarの代わりに、phpmyadminでエキスポートしてdb.sqlという名前のファイルを作り、これを新しい環境のphpmyadminを使ってインポートすることもできます。ファイルの大きさが凡そ700倍ほど違います。

ubuntuではなくもっと軽いlinux(例えば流行りのAlpine linuxやArch linuxなど)を使えば少ない容量になると思いますが、コマンドの体系が変わるかもしれません。

エラーの理由

記事を書いている時にはちゃんと表示されているのですが、記事を公開すると、書いた通りに表示されないのです。
これは「wordpress ソースコード 表示」などで検索して見るとプラグインなどがあり、これを使えば書いた通りの表示ができるようです。

例えば
「 -rm –> –rm」

「 -rm --> --rm 」

の違いわかりますか?

コメント