概要
この記事では、Dockerを使用してWordPressをインストールする方法について説明します。つまり、DockerコンテナとDockercomposeを使用してWordPressをインストールします。次の手順のシナリオは次のようになります。Singeホストマシン(1台のDebianサーバー)と1台のDockerエンジンが実行されています。ホストに公式のWordPressDockerコンテナーをインストールし、データの永続性も設定します。もちろん、この方法は、Dockerエンジンを実行している限り、他のLinuxホストマシンでも機能します。
要件:
- Linuxホスト
- Dockerがインストールされて実行されています。
Dockerをインストールする
Dockerのインストールでは、Debian、Ubuntu、Raspbianをホストとして使用している場合は、公式の自動インストールDockerスクリプトを使用できます。それ以外の場合は、Dockerのドキュメントまたはこの投稿を参照してください。
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
Dockerをユーザーグループに追加します:
sudo usermod -aG docker <username>
Dockerコンテナを使用してWordPressをインストールする
WordPress Dockerコンテナをインストールするには、次のコマンドを使用できます。
docker run --name some-wordpress -p 8080:80 -d wordpress
これにより、Webサーバー、WordPressインストール、PHP、およびMySQL(MariaDB)データベースサーバーを実行する1つのDockerコンテナーがデプロイされます。このオプションは理想的な展開ではありません。ほとんどの場合、Webサイトのデータも残り、コンテナー内に保存され、コンテナーを再起動するたびにすべてのデータが失われます。そのため、WordPressの永続的なデータ(ホストにデータを保存する)が必要です。この種のデプロイでは、次のようにWordPressコンテナを実行することをお勧めします。
DB container:
docker run -e MYSQL_ROOT_PASSWORD=<password> -e MYSQL_DATABASE=wordpress --name wordpressdb -v "$PWD/database":/var/lib/mysql -d mariadb:latest --restart:unless-stopped
WordPress container:
docker run -e WORDPRESS_DB_USER=root -e WORDPRESS_DB_PASSWORD=<password> --name wordpress --link wordpressdb:mysql -p 80:80 -v "$PWD/html":/var/www/html -d wordpress --restart:unless-stopped
この種のデプロイでは、データベースとワードプレスのコンテナーを別々にデプロイしました。コマンドの内訳:
DBコンテナ:
-e: -e引数を使用して、この場合はデータベースのクレデンシャルとパラメーター(パスワードとデータベース名)となる環境変数を設定します。
–名前: name引数は、データベースコンテナ名の名前をどのように設定するかです。
-v: この引数を使用して、コンテナがコンテナ内ではなくすべてのデータベースデータを保存するホストサーバーにディレクトリを設定してマウントします。このパラメータはデータの永続性を設定するため重要です。
-d: この引数を使用して、Dockerコンテナイメージを選択します。この場合は、最新のmariadbデータベースイメージを使用しました。
–再起動: コンテナが停止するたびにコンテナを再起動するようにDockerデーモンに指示する引数。
WordPressコンテナ:
-e: WordPress Dockerコンテナーの場合、WordPressがデータベースにアクセスできるように、データベースコンテナーパラメーターでもある環境変数を設定します。
–名前: ワードプレスコンテナの名前を設定するための引数でもあります。
–リンク: データベースリンク引数(WodpressからMariaDBコンテナへのデータベース接続を設定するため)
注: –リンクについて 議論として、Dockerは、これが将来的にレガシー機能になり、将来のDockerアップデートで削除され、データベースコンテナ接続が切断される可能性があることを発表しました。そのため、この種のデプロイを計画している場合は、Dockerコンポジションを使用して、またはWordPressがMariaDBデータベースに接続するためにDockerネットワークに依存するスタックとしてこのWordPressセットアップをデプロイすることをお勧めします。これについては次の章で説明します。
-p: 公開されたポート変数。 WordPressに公的にアクセスできるようにするために、ホストとコンテナで公開するポート。
-v: ホストからディレクトリを追加し、WordPressファイルを保存するホストマシンのマウントポイント-別名データ永続性。
-d: 使用するDockerイメージ。
–再起動: コンテナが停止するたびにコンテナを再起動するようにDockerデーモンに指示する引数。
Docker作成バージョン
Dockercomposeをインストールします:
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
最新のdockercomposeリリースについては、dockerのドキュメントを参照してください。
この作成ファイル用に別のディレクトリを作成し、そのディレクトリ内にDocker作成ファイルを作成できます。
mkdir wordpress && cd wordpress/
touch docker-compose.yml && nano docker-compose.yml
次のyaml構成を使用できます:
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- wordpress:/var/www/html
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- db:/var/lib/mysql
volumes:
wordpress:
db:
構成ファイルは、前の章のコンテナーをデプロイするためのコマンドラインと非常によく似ています。
スタックをデプロイし、compose fileディレクトリにいる間に、次のコマンドを実行します。
sudo docker-compose up -d
展開が完了するまでに数分かかります。
スタックとしてデプロイ
Dockerまたはdockercomposeを使用してWordPressをスタックとしてデプロイするには、構成ファイルにstack.ymlという名前を付け、次のコマンドを実行します。
Docker
docker stack deploy -c stack.yml wordpress
Docker compose
docker-compose -f stack.yml up
展開にどのステップを選択したかに関係なく、成功する結果は次のようになります。
そして、ブラウザからWordPressのインストールにアクセスできるようになったら:
注: UFWまたはIPTABLESファイアウォールを実行している場合、ブラウザ経由でWordPressにアクセスするには、適切なポート(ホストマシン用に公開したポート)を開く必要があります。
UFW
sudo ufw allow 8080
IPTABLES
sudo iptables -I INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
or
sudo iptables -A INPUT -p tcp -m tcp --dport 8080 -j ACCEPT
概要
記事を要約すると、Dockerを使用してWordPressをインストールする方法と、Dockercomposeを使用してWordPressをインストールする方法を紹介しました。お気づきのとおり、DockerとDockercomposeを使用してWordPressを削除する方法はいくつかあります。しかし、全体として、非常に好ましい方法は、WordPress用とMariaDB/MySQLサーバー用に別々のコンテナーを用意することです。将来のスケーラビリティを簡素化し、データの永続性を確保するには、必須です。
お時間をいただきありがとうございます…