Docker コンテナーで WordPress を実行しようとすると、フォルダーの所有権の問題が発生します。のようなフォルダーはルートによって所有されwp-content
てthemes
いるため、Web インターフェイスからテーマやプラグインをインストールできません。
目標
- Docker で WordPress を実行します。
- git リポジトリ (私たちが所有) からテーマを取得します。
- 公式の Docker イメージから WP-CLI を実行できる (
wordpress:cli
)。 - Web インターフェイスからテーマとプラグインをインストールできる。
- 下にあるすべてのファイルとフォルダーを(uid 33)
/var/www/html
が所有するようにします。www-data
スペック
- Docker バージョン 18.09.5、ビルド e8ff056
- docker-compose バージョン 1.24.0、ビルド 0aa59064
- サービスごとに単一のコンテナ インスタンス - kubernetes、swarm、stack などはありません。
- じぶんの
docker-compose.yml
- 私
dockerfile
(gitリポジトリからコピー):
FROM wordpress:5
COPY --chown=33 ./ /var/www/html/wp-content/themes/theme/
ボリューム
dockerfile でボリュームを宣言しません。上記の 2 行だけで、他には何もありません。実際、このイメージは、フォルダーを WordPress イメージにコピーするためだけに存在します。ただし、WordPress イメージ (私のイメージの派生元) は、dockerfile でボリュームを宣言しています。
docker-compose ファイルでボリュームを宣言していますが、それらを省略しても問題は解決しません
結果
ファイルとフォルダの所有権...
- 名前付きボリュームでカスタム イメージを使用する場合
- 名前付きボリュームのないカスタム イメージを使用する場合
- 名前付きボリュームでデフォルト イメージを使用する場合
- 名前付きボリュームなしでデフォルトを使用する場合
アップデート
Docker ビルドのステップでいくつかの問題が発生してCOPY
いますが、何が原因かわかりません。
に変更dockerfile
しました
FROM alpine
COPY ./ /var/www/html/wp-content/themes/theme/
RUN chown -R 33:33 /var/www/html
RUN ls -n /var/www/html
アルパインからビルドする場合、uid33
が所有者です。
Step 4/4 : RUN ls -n /var/www/html
---> Running in e9850fa85800
total 4
drwxr-xr-x 1 33 33 4096 Apr 12 19:34 wp-content
最初の行を に変更しますFROM wordpress
。今root
は所有者です:
Step 4/4 : RUN ls -n /var/www/html
---> Running in 2810cc37aaba
total 4
drwxr-xr-x. 3 0 0 4096 Apr 12 19:38 wp-content
必要な結果 (つまり、(uid 33)/var/www/html/wp-content/themes/theme/
が所有するすべてのファイルとフォルダーのテーマ ファイル) を取得するにはどうすればよいですか?www-data