Docker for Macで始めるお手軽WordPress環境の様々なカスタマイズ

  1. 公開日:2016/08/04
  2. 更新日:
  3. Mac,WordPress
  4. 0
7
SHARES
B!

詳細な解説付き!今から始めるDocker for Mac!快適なWordPress開発環境を手に入れよう! – OTTAN.XYZでご紹介した、Docker for Macを使ったWordPressの開発環境の構築。超高速にWordPress環境を構築できる代わりに、デフォルトの状態では少し貧弱ですね。

https://ottan.xyz/docker-for-mac-wordpress-4711/

そこで、以前ご紹介した本番環境のWordPressとMySQLの内容含めて丸ごと同期できる「WordMove」くらい動作させたいものです。そこで、空状態だった「WordPress」イメージを、「WordMove」を動作させるまでの過程をご紹介します。これを機に思う存分カスタマイズしてみてください。

https://ottan.xyz/vccw-wordmove-deploy-4092/

Dockerコンテナのカスタマイズ

前回、ご紹介した記事を読んでいただいている前提で話を進めますので、まだの方は詳細な解説付き!今から始めるDocker for Mac!快適なWordPress開発環境を手に入れよう! – OTTAN.XYZをご覧ください。

DockerコンテナにWordMoveを導入する

ターミナルを起動し、Dockerコンテナが起動していることを確認してください。確認したら「wordpress」コンテナに仮想端末経由でログインします。

$ docker exec -it wordpress /bin/bash

wordpressは、コンテナの名称です。コンテナの名称を変更している方は、任意の値に変更してください。以下、#プロンプトで始まる作業は、すべてDockerコンテナでの作業です。

カーネルを確認してみる

ターミナルで以下のコマンドを実行します。

# uname -a

以下の表示を見る限り、「4.4.15-moby」というカーネルです。Debian系には詳しくないのですが、Linux系OSが動作しているということだけはわかります。

Linux bf0b08f3764c 4.4.15-moby #1 SMP Thu Jul 28 22:03:07 UTC 2016 x86_64 GNU/Linux

ターミナルで以下のコマンドを実行します。

# cat /etc/os-release

やはり、「Debian」のようです。

PRETTY_NAME="Debian GNU/Linux 8 (jessie)"
NAME="Debian GNU/Linux"
VERSION_ID="8"
VERSION="8 (jessie)"
ID=debian
HOME_URL="http://www.debian.org/"
SUPPORT_URL="http://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

WordMoveを導入する

「WordMove」を動作させるためには、「ruby」が導入されている必要があります。しかし、初期状態では「ruby」はインストールされていません。そこで、以下のコマンドを実行し、パッケージのアップグレード、アップデートを行います。このコマンドがあってよかった…。

# apt-get upgrade
# apt-get update

続いて、以下のコマンドを実行します。

# apt-get -y install ruby

これで、「ruby」のインストールが完了しました。続いて、「ruby」のパッケージマネージャである「gem」を使用して、「WordMove」をインストールします。

# gem install wordmove

「WordMove」のインストールが完了しました。あとは、以下でご紹介している記事を参照しながら、本番環境のホストに繋いで「WordMove」を実行するだけだ!と思い込んでいたのですが。

https://ottan.xyz/vccw-wordmove-deploy-4092/

よくよく考えると、エックスサーバーに接続するための「ssh」コマンドも用意されていない。というわけで、以下のコマンドを実行し、「ssh」を導入します。

# apt-get -y install ssh

これで「WordMove」が実行できる!…と思いきや、よくよく考えると「WordMove」を動作させるための「Movefile」を作成しないといけない。

# cd

とりあえず、「root」ユーザのホームディレクトリに移動し、「Movefile」を作成する予定が…。今度は、テキストファイルを編集できるエディタがインストールされていない。そこで、以下のコマンドを実行し、「vim」をインストールします。

# apt-get -y install vim

これで、「Movefile」を定義できるはずだ、と思いきや、よくよく考えると、別コンテナで既に動作させている「db」コンテナへの接続方法がわからない。しかし、コンテナ起動時に「db」コンテナへリンクしているはずだ!ということを思い出し、名前解決はできるのであろうと踏んで、hostsを覗いてみます。

# cat /etc/hosts

なるほど、「db」というコンテナの名称が名前解決できるようにhostsに記載がありますね。

127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.17.0.2	mysql 8f698b11cdea db
172.17.0.3	bf0b08f3764c

というわけで試行錯誤しながら作成した「Movefile」の全容がこちらです。ターミナルで以下のコマンドを実行します(ホームディレクトリに作成していることを前提とします)。

# cat ~/Movefile
local:
  vhost: "http://localhost:8080"
  wordpress_path: "/var/www/html"

  database:
    name: "wordpress"
    user: "root"
    password: "root"
    host: "db"

staging:
  vhost: "http://your-domain"
  wordpress_path: "/home/username/your-domain/public_html" # use an absolute path here

  database:
    name: "db_name"
    user: "db_user"
    password: "db_password"
    host: "db_host"
    charset: "utf8"

  exclude:
    - ".git/"
    - ".gitignore"
    - ".sass-cache/"
    - "bin/"
    - "tmp/*"
    - "Gemfile*"
    - "Movefile"
    - "wp-config.php"
    - "wp-content/*.sql"
    - ".htaccess"

  ssh:
    host: "username.xsrv.jp"
    user: "username"
    port: 10022 # Port is optional
    rsync_options: "--verbose" # Additional rsync options, optional

ポイントは、vhostwordpress_pathdatabaseの記述です。vhostは、コンテナ起動時に-pオプションで指定したポート番号を指定します。また、データベースのhostには、MySQLが動作するコンテナの名称を記載します。

さあ、いよいよ実行か!…と思ったら、まだありました。本番環境のMySQLをダンプした結果を、Dockerコンテナで動作するMySQLに同期するための「mysqldump」コマンドがインストールされていない。そこで、以下のコマンドを実行します。

# apt-get -y install mysql-client

これで、「mysqldump」が使えるようになります。もう大丈夫!と安心しきっていると、まだエラーが。リモートホストとローカルホストのファイルを同期するための「rsync」がインストールされていない。そこで、以下のコマンドを実行します。

# apt-get -y install rsync

ようやくこれで「WordMove」を実行するための準備が整いました。以下のコマンドを実行して、「WordMove」が動作することを確認してください(「Movefile」が存在するディレクトリで実行してください)。

# wordmove pull --all

WordMoveを導入するまでの一連の流れ

試行錯誤しましたが、「WordMove」を実行するだけなら、以下のコマンドを実行して「Movefile」を作成すれば良いだけということになります。あっさり。

# apt-get install -y ruby ssh vim mysql-client rsync
# gem install wordmove

WordMove実行時にエラーになる

WordMove実行時に以下のエラーが表示される場合は、Rubyのエンコーディングが「US-ASCII」である可能性があります。

Error: invalid byte sequence in US-ASCII

そのような場合は、以下のコマンドを実行します。

# vi ~/.bashrc

.bashrcの末尾にRuby実行時のオプションを追加してください。

RUBYOPT=-EUTF-8

次回から/bin/bash実行時に自動的に環境変数に追加されますが、今すぐに適用したい場合は、以下のコマンドを実行してください。

# source ~/.bashrc

Dockerコンテナを保存する

さて、ここまで苦労して作り上げたコンテナですが、コンテナを削除してしまえば元の木阿弥です。なぜなら、コンテナは「イメージ」から作り上げたものであって、「イメージ」に変更が加わるわけではないからです。とはいえ、一度作った環境は保存しておきたい。そうしたい場合には、一度コンテナからログアウトし、以下のコマンドを実行し、「イメージ」を保存します。

$ docker commit wordpress ottan

wordpressは実行しているコンテナの名前、ottanはイメージの名前。

$ docker images

上記のコマンドを実行すると、「イメージ」が新規に保存されていることがわかります。

REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
ottan                   latest              b0b9252e83fd        9 seconds ago       551.4 MB
phpmyadmin/phpmyadmin   latest              c2e6d9434a3b        8 days ago          57.03 MB
wordpress               latest              ba0d4f420656        2 weeks ago         429.6 MB
mysql                   5.7                 1195b21c3a45        7 weeks ago         380.2 MB

ついでにMacのディレクトリをコンテナにマウントする

起動中のコンテナにログインして、テーマやプラグインファイルを編集するのは面倒くさいですよね。そういう場合には、コンテナのファイルを、Mac側で編集できるように、コンテナを新規作成するときに以下のコマンドを実行します。

$ docker run -v ~/Dropbox/vccw/www/wordpress/wp-content/themes/ottan-xyz-v3:/var/www/html/wp-content/themes/ottan-xyz-v3 --name ottan --link db:mysql -p 8080:80 -d ottan

ついでなので、先ほど作成したイメージである「ottan」を使用してみました。また、ややこしいですが、コンテナの名称を指定する--nameオプションも同一名称にしています。既存のコンテナの名称と重複しなければ何でも良いです。「wordpress」は既に使用していたので、「ottan」としましたが、もうイメージも保存しましたし、用済みなので「wordpress」コンテナを削除して、新たに「wordpress」コンテナを「ottan」イメージで作り直すこともできます。

まとめ

Docker for Mac、限りなく便利ですね!

この記事が気に入ったらいいねしよう!
こちらの記事も読まれています
ご意見ボード
匿名で管理人に送信されます。※送信専用です。返信はできません。
ご指摘・ご意見
Top