WordPress:ローカル開発環境をDropboxで共有

はてなから WordPress に移行準備中です。

パーマリンク(URL)の維持、そしてデータの整形と移行が簡単にできるようになりましたので次はテーマ開発です。



ここまでの成果

パーマリンクの維持

検索エンジンに登録された URL を WordPress に移行しても「はてなブログ用リライトルールプラグイン」でそのまま維持します。


データ移行

はてなブログのエクスポートファイル内のフォトライフの画像を WordPress 内にコピーし、同時にファイル内の URL 変更やその他の整形をし、WordPress にインポート可能ファイルとして保存します。


WordPress のローカル開発環境

仕事場と自宅でデータを共有する方法とテーマ開発の方法を理解するのに1週間も費やしてしまいました。


シンボリックリンクではうまくいかない

個人が2ヶ所でデータを共有したいというレベルの話ですので、作業が済んだたらいちいちアップロードしたり、git したりするという面倒な方法は除外するとしますと、Dropbox にデータを置いて共有する方法しか思いつきません。

で、WordPress のテーマディレクトリと mysql のデータディレクトリを Dropbox に置いて、それぞれシンボリックリンクで WordPress を立ち上げられないかとやってみたのですが、どうしてもうまくいきません。

ネットにはうまくいっている方もいるようですが、私の環境では権限や所有者をあれこれいじってもダメでしたのであきらめました。


Docker の volumes で Dropbox をマウントする

あれこれググっているうちに Docker の volumes で Dropbox のディレクトリをマウントできるのではないかと思い、やってみましたらうまくいきました!

初めての Docker ですので、インストール等は Docker-Docs を基本にしています。


Docker, Docker-compose のインストール

仕事場は Windows10 がメインですので Docker Desktop for Windows になりますが、WSL2 を入れていますので WSL2 上で Docker が走るということになるのでしょうか。よくわかりませんので、とにかく指示に従ってインストールしていきます。

Docker Desktop WSL 2 バックエンド


f:id:ausnichts:20210913170230j:plain

上記からダウンロードし、起動しますと、すでに WSL2 にチェックが入っています。


f:id:ausnichts:20210913170413j:plain

解凍しています。思ったよりも時間がかかります。


f:id:ausnichts:20210913170525j:plain

完了しますとログアウトを促されますのでログインし直します。


f:id:ausnichts:20210913170637j:plain

自動で立ち上がったのか、ショートカットをクリックしたのか忘れましたが、このダイアログになりますので同意します。


f:id:ausnichts:20210913170757j:plain

Docker Engine が起動します。設定の General とか Resources を確認しましたが何も変更していません。WSL2 で Docker が動くようになっています。


f:id:ausnichts:20210913171044j:plain

WSL2 からバージョンを確認しています。すでに昨日、自宅の Ubuntu には Docker をインストールして Wordpress の立ち上げもやっていますので、インストールされていれば問題ないだろうということで、ここでは hello-world コンテナでのチェックもやっていません。


f:id:ausnichts:20210913171117j:plain

Docker-compose の最新版をインストールします。


Docker + WordPress + Dropbox

Docker-compose を使って WordPess と Mysql の環境を構築します。


WSL2 上にプロジェクト用ディレクトリをつくり、そこに docker-compose.yml を起き、docker-compose up -d と打って起動し、ブラウザで http://localhost:8000 にアクセスしますと WordPress のインストールページが立ち上がります。データベース設定はありませんのでサイト設定だけです。


docker-compose.yml

Mysql のデータディレクトリと WordPress のドキュメントルートを Dropbox に置く設定です。


version: '3'

services:
   db:
     image: mysql:5.7
     volumes:
       - /mnt/c/Users/(ユーザー名)/Dropbox/WordPress/mysql:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "8000:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
     volumes:
       - /mnt/c/Users/(ユーザ名)/Dropbox/WordPress/html:/var/www/html


これで Docker のコンテナ WordPress と Mysql が立ち上がります。

開発はこれからですので何か問題が出るかも知れません。また、wp-content ディレクトリだけ Dropbox のディレクトリをマウントすることも可能なようです。その場合の docker-compose.yml は、

     volumes:
       - ./html:/var/www/html
       - /mnt/c/Users/(ユーザ名)/Dropbox/WordPress/html/wp-content:/var/www/html/wp-content

とします。ただ、いきなりこの設定では起動せず、一度 WordPress を WSL2 のプロジェクトディレクトリで起動してから、wp-content ごと Dropbox にコピーして、あらためて docker-compose.yml を書き直して起動すればうまくいくようです。


開発はこれからですので、これでうまく行くかどうか、問題があればまだ報告します。