WordPress のテーマやプラグインを開発するために Docker でローカル環境を構築する際、複数ヶ所から同じデータを使うために Dropbox で共有する方法です。
01Docker が簡単でびっくり!
現時点の環境は Ubuntu と Windows10 です。
まず Docker のインストールですが、Ubuntu を使っている方がなんであれインストールに迷うことはないと思いますので、Docker ドキュメントのリンクを記載しておきます。
Windows10 の場合は、まず WSL2 をインストールする必要があります。
その上で Docker Desktop WSL 2 をインストールします。
Docker Compose をインストールします。
WordPress を立ち上げる
Docker Compose が入れば、Ubuntu であれ、Windows であれ、同じ docker-compose.yml であっという間に WordPress が立ち上がります。
02Dropboxでデータ共有
で、本題の Dropbox を使ったデータ共有です。
これが意外と難しく、特に Mysql の所有権を一致させないと Dropbox と同期できなかったり、そもそも Mysql がデータを読み込まなかったりします。
当初は Windows10 の方は Windows10 に同期された Dropbox を使い、WordPress や Mysql のデータを /mnt/c/Users/(ユーザ名)/Dropbox
下のディレクトリにマウントし、所有権を 777, 666 に指定して、なんとか共有できていたのですが、これですと、おそらくファイル形式の変換にかなりの時間を要していたのでしょう、なかなか実用レベルにならない結果でした。
ということで、何のことはない、WSL2 に Dropbox を入れればいいということに気づき(遅い!)やってみました。
WSL2 に Dropbox インストール
Dropbox 公式にインストール方法があります。
リンク先の「コマンド ラインを使った Dropbox のヘッドレス インストール」に従ってインストールします。インストールが完了しますと、既存のアカウントとのリンクの指示が出ますのでそれに従いリンクさせます。リンクされますと、ログインアカウントのホームディレクトリに Dropbox
ディレクトリが作成され順次ファイルがダウンロードされてきます。
なお、インストールページの最下行に「コマンド ラインから Dropbox を管理するには Python スクリプト をダウンロード」とありますが、Python スクリプトを使わなくてもインストールした dropboxd
で管理できます。コマンドラインで $ dropbox help
と打って次のようにコマンドオプションが表示されれば問題ありません。
![](/wp-content/uploads/2022/02/20220228111258.png)
03Dropbox で Docker データの共有
Dropbox で Docker データを共有するには Dropbox にデータディレクトリをマウントすればいいのですが、Dropbox ユーザーがアクセス権限を持っていないディレクトリやファイルはリンクされません。当たり前といえば当たり前のことなんだろうと思います。
一方、WordPress を Docker 公式イメージで立ち上げますと、WordPress や Mysql が root や www-data で稼働します。このままでは ファイルが Dropbox にアップロードされません。
で、次の手順で WordPress の稼働ユーザーを変更します。
コンテナを一般ユーザーで稼働させる
Ubuntu, WSL2 上の Ubuntu のどちらでもいいですので次の手順で WordPress を稼働させます。
- docker-compose.yml で WordPress と Mysql コンテナを立ち上げる
- 通常通り、WordPress をインストールする
- いったんコンテナを停止する
- WordPress と Mysql インストールディレクトリの uid と gid をホストと同じ一般ユーザーに書き換える
- docker-compose.yml に user: 指定を追加し WordPress と Mysql を立ち上げる
詳しくは次の記事をご覧ください。
後は他デバイスからも同じ docker-compose.yml
を実行すれば、すでに存在している Dropbox ディレクトリの Docker データでで WordPress が起動します。
現在のところ、これで2ヶ所から同じデータで WordPress が立ち上がりテーマやプラグイン作成が可能になっています。