Dockerの稼働環境の違いによって、WordPressのアップデートが上手くいかない場合があるようです。
WordPress更新時、FTP画面を出さず、直接アップデートできる設定手順を記録したいと思います。
Docker版WordPressのhtmlディレクトリパーミッション変更
アップデートがうまくいかない環境の例
Docker-composeを使用したWordPressサーバの構築手順はこちらになります。
これらの環境では、WordPressのアップデートは特に問題ありませんでした。
Fedora等、SELinuxが導入された環境では、アップデートが上手く行かず、FTP画面が表示されました。SELinux環境向けのdocker-compose.yamlは次のような内容です。
version: '2'
services:
db:
image: mysql:latest
volumes:
- "./.data/db:/var/lib/mysql:z"
restart: always
environment:
MYSQL_ROOT_PASSWORD: <管理用パスワード>
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: <MYSQLパスワード>
wordpress:
depends_on:
- db
image: wordpress:latest
links:
- db
ports:
- "8000:80"
volumes:
- "./.data/html:/var/www/html:z"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_PASSWORD: <MYSQLパスワード>
各Volumesの:zラベルは、SELinux環境でボリュームへアクセスするためのものです。
htmlディレクトリのオーナー変更
次の手順でhtmlディレクトリオーナーを変更したところ、WordPressのアップデートが行えるようになりました。
- docker-compse execコマンドでwordpressコンテナのbashを起動します。
docker-compose exec wordpress bash
- /var/www/htmlディレクトリのオーナーを確認します。
ls -al /var/www/html
オーナーはrootユーザになっているようです。
- apache(Webサーバ)の実行ユーザを確認します。
ps -augx|grep apache
- www-dataユーザのグループを確認します。
grep www-data /etc/passwd grep www-dsata /etc/group
- /var/www/htmlディレクトリのオーナーをwww-dataに変更します。
chown -R www-data.www-data . ls -al .
設定変更後、WordPressのアップデートを行ってみました。