概要
Dockerを使ってWordpress環境を構築する際に、WordpressのURLと永続化用ディレクトリのユーザーIDを設定したくて作成した設定です。私自身は、Wordpressは全くの初心者でここ最近必要に迫られてセットアップしたもので、ひょっとしたら動作に不都合があるかもしれません(起動までは確認)。
カスタマイズイメージを作成し、起動する
Dockerfile
wordpress:4.7-php7.1-apacheをベースに作成。
FROM wordpress:4.7-php7.1-apache
RUN groupmod -g 1000 www-data \
&& usermod -u 1000 www-data \
&& chown -R www-data:www-data /usr/src/wordpress
$ docker build -t mywordpress .
解説
wordpress:4.7-php7.1-apacheではディレクトリのユーザーがwww-dataになっているので、ユーザーwww-dataのUIDおよびGIDを自分が使いたいID(ここでは1000:1000)にセットしています。
また、初回起動時に/usr/src/wordpressの内容がweb公開用ディレクトリ(後述)にコピーされるため、それらのファイルのIDをセットし直しています。
起動方法
初期設定では、WordpressのURLは http://example.com/ のようなトップディレクトリになっていますが、 http://example.com/wp/ のようにサブディレクトリにセットアップして起動してみます。
ここではwp-mysqlがMySQLのコンテナインスタンスです(設定は標準なので省略)。
docker run -d --restart always --name wp-app \
-p 8080:80 \
--workdir /var/www/html/wp \
--link wp-mysql \
-v /path/to/wp:/var/www/html/wp \
-e WORDPRESS_DB_HOST=wp-mysql \
-e WORDPRESS_DB_USER=wordpress \
-e WORDPRESS_DB_PASSWORD=mypasswd \
-e WORDPRESS_DB_NAME=wordpress \
mywordpress
解説
WORKDIRにWordpressのファイルが展開されるので、--workdir
オプションで使いたいディレクトリを指定すればできるみたいです。/var/www/html
がWebルートなので/var/www/html/wp
としています。
また、/path/to/wp
をWORKDIRにバインドして永続化しています。