Edited at

Docker-composeで最強(自分史上)のWordpress開発環境を作る

サーバーサイドエンジニアになった今でも、プライベートでは以前副業で制作したWordpressの改修案件が多いです。

そのような中、私のWordpressの開発環境構築は以下のように遷移しました。

入門書を読みながらMAMPでなんとか作成する。本番デプロイはFTPソフトのcyberDeckで、サーバー直上書き



黒い画面とお知り合いになる



VCCWと出会う。wordmove、sshの設定に苦しみながら、なんとか環境構築。vagrantで開発環境構築して、wordmoveでデプロイ



MacのOSアップデートでvagrantの起動に詰まる。その他、起動が遅い。メモリを食うことに嫌気が、、



クジラと出会う



現在

そんな経験を得て、今回作成したものは最強だと思っています。(N=1)


利点


  • docker-compose upで環境起動まで3秒。(初回のimageダウンロード除く)

  • .envファイルで設定管理。docker-compose.yml, movefile.ymlは触る必要なし

  • wordmoveでコマンド一発デプロイ、バックアップ

  • 複数環境起動してもメモリ消費わずか


リポジトリ

以下がそのリポジトリです。

README記載の通り基本、.envファイルに値追加すれば立ち上がります。

Wordpressの開発環境でお困りの方!是非使ってみてください!!

https://github.com/kawamataryo/quick-start-wordpress-docker


以下README.md 抜粋


開発環境構築


0. 事前準備

Macにdocker, docker-composeをインストール


以下参考:

Docker Compose - インストール - Qiita


1. 環境変数の設定

リポジトリをクローン

$ git clone https://github.com/kawamataryo/quick-start-wordpress-docker.git project-dir

.envにdocker-composeで使う環境変数を定義しています。

コメントを元に記載してください。

vi ./.env

# -------------------------------------------

# wordpress・mysqlコンテナの設定
# -------------------------------------------
# プロダクトの名前 作成されるcontainer名の接頭語として使用
PRODUCTION_NAME=
# local wordpressを紐付けるPort名(ex: 8080)
LOCAL_SERVER_PORT=
# localのmysqlを紐付けるPort名(ex: 3306)
LOCAL_DB_PORT=

# -------------------------------------------
# wordmoveコンテナの設定
# -------------------------------------------
# 全て本番環境の情報
# URL
PRODUCTION_URL=
# wordpressのディレクトリの絶対パス
PRODUCTION_DIR_PATH=
# DB名
PRODUCTION_DB_NAME=
# DBのユーザー名
PRODUCTION_DB_USER=
# DBのパスワード
PRODUCTION_DB_PASSWORD=
# DBのホスト名
PRODUCTION_DB_HOST=
# DBの接続ポート
PRODUCTION_DB_PORT=
# SSHホスト名
PRODUCTION_SSH_HOST=
# SSHユーザー名
PRODUCTION_SSH_USER=
# SSHポート名
PRODUCTION_SSH_PORT=


2. Dockerコンテナの起動

docker-composeで関連コンテナを起動します。

$ docker-compose up -d


3. Wordpressの初期化

.envのLOCAL_SERVER_PORTに設定したホストにアクセスし、worpdressの初期化を行います

$ open http://localhost:8080


4. Dockerコンテナの停止

docker-composeで関連コンテナを停止します。

※ docker-compose downを行うと、DBのデータも初期化されてしまうので、注意。

もし永続化したい場合は以下を参考に設定を追加する。

DockerでMySQLのデータを保存する方法

$ docker-compose stop


wordmoveでの本番デプロイ、バックアップ

wordmoveを使えば容易に本番環境とローカル環境の同期が可能です。


1. wordmoveのコンテナに接続

wordmoveのコンテナが起動した状態で以下コマンドを実行します。

$ docker exec -w /home/ -it wordmoveのコンテナ名 /bin/bash


2. sshの設定

コンテナから本番環境に同期するためssh-agentの設定を行います。

接続先サーバーとのssh接続設定、ローカルのssh/configの設定は終わっていることを前提としてます。

またid_rsa(秘密鍵)までのパスは接続するサーバーに合わせて記載してください。

参考:

エックスサーバーにSSHで接続してみよう! | vdeep

ssh-agentを利用して、安全にSSH認証を行う - Qiita

# ssh-agentの起動

$ ssh-agent bash

# ssh-agentの登録。
$ ssh-add /home/.ssh/id_rsa


3. 同期・デプロイ

あとはコマンド一発で同期が可能です。

本番のデータをローカルにバックアップしたい場合は、、

$ wordmove pull --all

ローカルのデータを本番にアップロードしたい場合は、、

$ wordmove push --all

さらにオプション部分の指定で、DBのみthemesのみなど同期内容を変更可能です。

参考:


Wordmoveの基本操作 - Qiita


TODO


  • wordmoveで毎回ssh-addの設定を行う手間を削減(docker-composeのcommandで行う?)

  • MySQLのデータ永続化の設定追加


参考

https://docs.docker.com/compose/wordpress/

https://qiita.com/maimax/items/5090fd37f9832fe3c5fd