はじめに
Docker上のWordpressにボリュームをマウントすると、プラグインのインストールや削除ができなかったので対処法をメモしておく。
ちなみにDocker Desktop for Macではこの記事の問題は起こらなかった。
環境
- Ubuntu 18.04
- Docker 19.03.6
- Docker Compose 1.25.3
- Wordpress 5.3.2
状況説明
まず、自分はwp-content/pluginsとwp-content/uploadsにファイルシステムからマウントした。
問題1 プラグインを削除できない。
問題2 プラグインをインストールできない。
対処法
Dockerfileを作成し、ENTRYPOINTでwp-contentとwp-content/plugins、wp-content/uploadsの所有者を変更してやればいい。
Dockerfile
FROM wordpress:latest
ENTRYPOINT chown www-data:www-data /var/www/html/wp-content /var/www/html/wp-content/plugins /var/www/html/wp-content/uploads && docker-entrypoint.sh apache2-foreground
# chownで対象ディレクトリの所有者変更。
# docker-entrypoint.shでWordpressイメージのENTRYPOINT呼び出し。
docker-compose.yml
version: '3.3'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
build: . # Dockerfileからビルド。
volumes:
# pluginsとuploadsをマウント。
- ./plugins:/var/www/html/wp-content/plugins
- ./uploads:/var/www/html/wp-content/uploads
ports:
- "80:80" # SiteGuard等でアクセスエラーが出るのでポートは同じ方が望ましい。
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}