ぱーくんのサイト別館

ぱーくん plus idea

【詳解】Docker ComposeによるWordPress環境構築と永続化

 
この記事を書いている人 - WRITER -
ご訪問ありがとうございます(^^)
副業でネットビジネスに取り組んでいるぱーくんと申します。

激務でも増えない給料に失望し、将来のために別の収入源が欲しい!の一心でネットビジネスをはじめ、2018年4月に20万円達成。

ひと月36万アクセスあるサイトを作ったノウハウは無料で公開中。 ⇒⇒コチラ
ネットビジネスで未来を夢見れる方を一人でも増やしたいと思っています。

誰でも最初は初心者。
【やってみたいけど、初心者だから不安】
という方は、ぜひお気軽にお問合せください♪
詳しいプロフィールはこちら

以前はLAMP環境を構築することで、Wordpressの開発環境を比較的簡単に作ることができましたが、dockerの登場により、さらに楽に環境を用意することができるようになってきました。

さらに、コンテナ上で動かすので、異なるバージョンのphpやwordpressなども共存させることも可能で、開発が終われば、コンテナをstopしてしまえば、自分のPCを汚すこともありません。

この記事では、dockerを使ってWordpressを動かす環境を手軽に作ることにしましょう。

 

 

作成するdocker環境の概要とディレクトリ構造

作成する環境の概要ですが、

コンテナの管理には、docker-composeを使い、

  • Apache+PHP+Wordpressが動くコンテナ
  • DBが動くコンテナ

の2つをBuild&Runします。

 

Docker-composeは、dockerをインストールすれば一緒に入ります。

まだdockerを入れていない人は、以下の記事などを参考にインストールしてください。

 

さて、初めに全体像が分かるようにディレクトリ構造を見てみることにしましょう。

例えば、dc_wordpressというディレクトリの下に、必要なファイルを置いていくことにします。

dc_wordpress直下にはdocker-compose.ymlを置きます。これが、docker composeのbuild用設定ファイルです。

また、dc_wordpressディレクトリには、mysqlとwordpressという2つのディレクトリを作成し、その下にそれぞれDockerfileという名前でdockerをbuildするための設定ファイルを置きます。

もちろん、ディレクトリやDockerfileを分けず、docker-compose.ymlに全部記載することもできます。

ただ、ちょっと動かしてみるだけではなく、本格的な開発に使ったり、テーマやプラグインなどの追加の機能を入れてカスタマイズしていったりするには、最初からディレクトリを分けておいた方が良いと思います。

 

全体像(フォルダ構成)はこんな感じ
(※shareディレクトリは、あとで、ファイルの永続化に使いますので、今は必要ないです。)

 

では、それぞれのファイルの中身を見ていきます。

 

docker-compose用buildファイル(docker-compose.yml)

docker-compose.yml

前半部分を解説すると

となり、

./mysqlディレクトリにあるDockerfileを使って img_mysql:1.0という名前のイメージをbuildし、con_mysqlという名前でそのコンテナを起動する

ということになります。

また、コンテナの3306番ポートを同じく3306番で公開するので、自分のPC(ホスト側PC)からも3306番で接続出来ます。(wordpressの実行には、ホストからの接続は必要はないので、このportsの記載はなくてもいいです。後でPCからDBの中身を見たりする用に記載しています。)

 

前半が分かれば後半も分かりやすいですね。

要は

./wordpressディレクトリにあるDockerfileを使ってimg_wordpress:1.0という名前のイメージをbuildし、con_wordpressという名前でそのコンテナを起動する

ということになります。

 

前半とちょっと違うのは、portslinksの記載ですね。

Ports:の – “8080:80″ は、ホストPCから8080番でアクセスすると、コンテナ内で80番で起動しているApacheにリクエストが転送される

という意味です。

そのため、後ほどブラウザを開いて、「http://localhost:8080」でアクセスすると、コンテナ内の80番で動いているApacheにアクセスできるというわけです。

 

Links:の方は、wordpressサービスからmysqlサービスを見れるようにする設定です。

この記述がないと、wordpressのコンテナからmysqlのコンテナにネットワーク的に到達できません。

この記載があるので、 環境変数のWORDPRESS_DB_HOST: mysql:3306でdbに接続できるようになります。

では、それぞれのDockerfileを見てみます。

 

DB側のdocker用buildファイル(Dockerfile)

mysql側のbuildファイルです。

mysqlのバージョン指定してイメージを取得しています。

my.cnfをカスタイマイズしたい人は、3行目と4行目のコメントアウトを外してください。

カスタマイズ方法はこの記事を参照。

 

Apache+php側のdocker用buildファイル(Dockerfile)

wordpress側のbuildファイルです。
こちらもバージョン指定指定しています。
公式のイメージのページは、
https://hub.docker.com/_/wordpress/
にありますので、使い方や、Tag名の確認をしたいときはこのページからどうぞ。

 

Build & run

さて、BuildのDockerfileの用意ができたら、「docker-compose.yml」のあるディレクトリで以下のコマンドを打って、イメージをBuildします。

成功したら、さらに、以下のコマンドでコンテナを起動しましょう。

docker exec -it con_mysql bash

 

永続化について

起動して、Wordpressにログイン、投稿できるところまでは確認できましたが、このままだと、コンテナをStopすると、せっかく投稿した記事がMysqlに残らず、また、プラグインやテーマも消えてしまいます。

そのため、ホストPCのディレクトリとコンテナとファイル共有することで、コンテナをStopしても、次回自動した時にデータが残るようにしてみます。

その設定がvolumes:です。

ここに、「<ホスト側ディレクトリ>:<コンテナ内ディレクトリ>」として、共有するフォルダを記載します。

すると、「/var/lib/mysql」配下のデータベースファイルや「/var/www/html」配下のwordpressのファイル類が、コンテナをStopしても残り、次回コンテナ起動時にも活きます。

この記事を書いている人 - WRITER -
ご訪問ありがとうございます(^^)
副業でネットビジネスに取り組んでいるぱーくんと申します。

激務でも増えない給料に失望し、将来のために別の収入源が欲しい!の一心でネットビジネスをはじめ、2018年4月に20万円達成。

ひと月36万アクセスあるサイトを作ったノウハウは無料で公開中。 ⇒⇒コチラ
ネットビジネスで未来を夢見れる方を一人でも増やしたいと思っています。

誰でも最初は初心者。
【やってみたいけど、初心者だから不安】
という方は、ぜひお気軽にお問合せください♪
詳しいプロフィールはこちら

- Comments -

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Copyright© ぱーくん plus idea , 2019 All Rights Reserved.