サーバーサイドエンジニアになった今でも、プライベートでは以前副業で制作した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の開発環境でお困りの方!是非使ってみてください!!
以下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
2020/05/10追記
mysqlのdumpで失敗する場合は以下をwordmoveのコンテナ内で実行してください。
# wordmoveのmysql dumpで使うRubyのエンコーディングをUTF8に
export RUBYOPT=-EUTF-8
3. 同期・デプロイ
あとはコマンド一発で同期が可能です。
本番のデータをローカルにバックアップしたい場合は、、
$ wordmove pull --all
ローカルのデータを本番にアップロードしたい場合は、、
$ wordmove push --all
さらにオプション部分の指定で、DBのみthemesのみなど同期内容を変更可能です。
参考:
Wordmoveの基本操作 - Qiita
TODO
- wordmoveで毎回ssh-addの設定を行う手間を削減(docker-composeのcommandで行う?)
- MySQLのデータ永続化の設定追加
2020/05/19 追記
@yamanaka-aiz さんに対応のコメント頂きました!
記事下のコメント欄も確認お願いします
参考
https://docs.docker.com/compose/wordpress/
https://qiita.com/maimax/items/5090fd37f9832fe3c5fd