DockerでWordPress(Ubuntu) – 2
Docker-composeを使ってWordpressをインストールするやり方がだいたいわかってきたので、メモしておく。
docker-compose.yml
以下のような docker-compose.yml を用意する。
docker-compose.yml
version: '3'
services:
db:
image: mysql:5.7
volumes:
- ./db_data:/var/lib/mysql --- (1)
- ./sql/mysql_dump.sql:/docker-entrypoint-initdb.d/install_wordpress.sql --- (2)
restart: always
container_name: mysql-bw
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
build: --- (3)
context: .
# image: wordpress:latest --- (4)
volumes: --- (5)
- ./themes/my-twentyseventeen-child:/var/www/html/wp-content/themes/my-twentyseventeen-child
- ./plugins/billies-get-rss2:/var/www/html/wp-content/plugins/billies-get-rss2
- ./uploads:/var/www/html/wp-content/uploads
links:
- db
ports:
- "8000:80"
restart: always
container_name: wordpress-bw
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes: --- (6)
db_data:
driver: local
(1) — ローカルの db_data フォルダを コンテナの /var/lib/mysql にマウントしている。そのため、mysqlのデータは、wordpressインストール時、このフォルダに作成される。
(2) — ローカルの sql/mysql_dump.sql を、コンテナの /docker-entrypoint-initdb.d/install_wordpress.sql にマウントしている。このことによって、wordpressインストール時、sqlファイルからデータベースのデータが自動的に読み込まれる。
(3) — build: . (あるいは、build: context: .)とすることで、このフォルダの Dockerfile から wordpress のイメージが作成される。
(4) — build しないのであれば、このイメージが使われていた。
(5) — volumes: で、それぞれのフォルダを、コンテナの各フォルダにマウントしている。
(6) — このように、トップレベルで volumes の指定を入れておくと、複数のコンテナからアクセスできるという情報があった。 (どこの情報だったか、忘れた)
2018.07.04 追記
このvolumes指定は必要ない。
ここで、たとえば以下のようにしていすると、
...(略)...
volumes:
mydata:
driver_opts:
type: none
device: ./db_data
o: bind
上記の
...(略)...
db:
image: mysql:5.7
volumes:
- mydata:/var/lib/mysql
...(略)...
というふうに書ける。
これは、今回の記述では必要がない。
(参考)Docker Composeのトップレベルvolumesでホストのディレクトリをマウントする
Dockerfile
さて、wordpress のイメージは、Dockerfile で作成できる。以下がそれである。
Dockerfile
FROM wordpress:latest --- (1)
MAINTAINER Seiichi Nukayama <billie175@gmail.com>
# 必要なツール類
RUN apt-get update
RUN apt-get -y install wget unzip
# wpプラグイン(zip) ダウンロード
WORKDIR /tmp/wp-plugins --- (2)
RUN wget https://downloads.wordpress.org/plugin/contact-form-7.5.0.2.zip
RUN wget https://downloads.wordpress.org/plugin/custom-post-type-ui.1.5.8.zip
RUN wget https://downloads.wordpress.org/plugin/easing-slider.3.0.8.zip
RUN wget https://downloads.wordpress.org/plugin/jetpack.6.2.1.zip
RUN wget https://downloads.wordpress.org/plugin/sf-archiver.zip
RUN wget https://downloads.wordpress.org/plugin/wp-multibyte-patch.2.8.1.zip
RUN wget https://downloads.wordpress.org/plugin/wp-social-bookmarking-light.2.0.7.zip
# zipファイルの解凍とインストール
RUN unzip './*.zip' -d /usr/src/wordpress/wp-content/plugins --- (3)
# 不要になった一時ファイルを削除
RUN apt-get clean
RUN rm -rf /tmp/*
# サーバが読めるように wp-content 以下の所有権を変更
RUN chown -R www-data:www-data /usr/src/wordpress/wp-content --- (4)
WORKDIR /var/www/html
(1) — 元となるイメージを指定する。
(2) — WORKDIR の指定をすることで、そのディレクトリで作業できる。
プラグインakismetは、デフォルトでソースファイルに含まれているので、ダウンロードは必要ない。
(3) — wordpress は、ソースファイルとして、このディレクトリに収められている。これを /var/www/html にインストールされることになる。
(4) — 所有権を変えておかないと、インストールされない。
URLを変更する。
今までで、プラグインがインストールされ、データも復元された状態で、インストールされている。
あとは、各リンクの URL を変更するだけである。
これは、wp-cli でやりたいところだが、まだ、そのやり方が究明できてないので、以下の方法でおこなう。
Search-Replace-DB-master をコンテナにコピーする。
これは、以下の方法で、できる。
$ ID=$(docker ps -q -f name=wordpress-bw)
$ docker cp ./Search-Replace-DB-master $ID:/var/www/html
ブラウザでアクセス
たとえば、以下のようにブラウザでアクセスする。
http://localhost:8000/Search-Replace-DB-master/
これで、URL変換をすることができる。
「Dry View」がプレビュー、 「Live View」が実行である。
変換がおこなわれた後、「Delete」をクリックすると、Search-Replace-DB-masterが削除される。
参考
カテゴリー: Docker, memo, wordpress
タグ:
カウント: 190