Docker, Wordpress · 2 min read · Oct 14, 2025
Ubuntu 16.04でNginxとPHP-FPMを使用したWordpressのDocker化
Docker-Composeは、複数のコンテナを単一のサービスのように定義および管理するためのコマンドラインツールです。ComposeはPythonで書かれており、Pythonのpipコマンドでインストールできます。Composeを使用すると、単一のコマンドで複数のDockerコンテナを実行できます。これは、開発、テスト、ステージング環境に最適です。
このチュートリアルでは、docker-composeを使用する手順をステップバイステップで説明します。Nginx、MySQL、PHP-FPMを使用して「Wordpress」をデプロイします。各サービスは独自のコンテナを持ち、Docker Hubレジストリからのイメージを使用します。Dockerイメージからコンテナを作成し、docker-composeで全てのコンテナを管理する方法を示します。
前提条件
- Ubuntu 16.04
- ルート権限
ステップ1 - Dockerのインストール
最初から始めて、aptコマンドでDockerとDocker Composeを手動でインストールします。
始める前に、Ubuntuリポジトリを更新し、最新のアップデートをインストールします:
sudo apt-get update
sudo apt-get upgradeデフォルトでは、DockerはUbuntuリポジトリに含まれているため、すぐにインストールを続けることができます:
sudo apt-get install -y docker.ioインストールが完了したら、Dockerを起動し、自動起動を有効にします:
systemctl start docker
systemctl enable docker次に、以下のコマンドでDockerのインストールをテストします:
docker run hello-worldDockerからhello-worldが表示されます。
ステップ2 - Docker-Composeのインストール
Docker-composeはPythonで書かれたスクリプトで、PyPI Pythonリポジトリにあり、Python pipでインストールできます。したがって、まずシステムにPythonとPython pipをインストールする必要があります。
Pythonとpython-pipをインストールします:
sudo apt-get install -y python python-pip次に、pipコマンドでdocker-composeをインストールします:
pip install docker-composeインストールプロセスが完了するまで待ちます。その後、docker-composeコマンドでインストールを確認します:
docker-compose -vdocker-composeのバージョンが表示されます。
ステップ3 - Wordpressのセットアップ
これで、システムにDockerとDocker-Composeがインストールされました。このステップでは、WordPressプロジェクトのためのdocker-compose環境を作成し、セットアップする方法を示します。
NginxをWebサーバーとして使用し、MariaDBをMySQLデータベースとして使用して「Wordpress」PHPアプリケーションをDockerコンテナとしてデプロイします。各アプリケーション(Wordpress、Nginx、MySQL)は独自のコンテナで実行されます。以下のリストを参照してください:
Nginx:公式のDockerイメージ、最新バージョン「nginx: latest」を使用します。
Wordpress:WordpressはDocker HubにいくつかのDockerイメージを提供しており、WordPress 4.7をPHP-FPM 7.0で使用します。
MySQL:MariaDBの公式コンテナ、最新バージョンを使用します。
したがって、Docker Hubレジストリから3つのDockerイメージが必要です。
Dockerをルートとして実行しないため、通常のLinuxユーザーを使用します。以下のコマンドで新しいユーザーを作成します(ここで異なるユーザー名を使用しても構いませんが、ユーザーがまだ存在しないことを確認してください。異なる名前を選択した場合は、このチュートリアルのすべてのコマンドで変更してください):
useradd -m -s /bin/bash hakase
passwd hakase次に、ユーザーを「docker」グループに追加して、ユーザーがdockerコマンドを使用できるようにし、Dockerサービスを再起動します:
usermod -a -G docker hakase
systemctl restart dockerユーザー「hakase」にログインし、WordPressプロジェクトのための新しいディレクトリを作成します:
su - hakase
mkdir -p wordpress-compose
cd wordpress-compose/次に、「docker-compose.yml」という新しいファイルを作成し、プロジェクトのための新しいディレクトリを作成します。以下のコマンドを入力します:
touch docker-compose.yml
mkdir -p nginx/
mkdir -p db-data/
mkdir -p logs/nginx/
mkdir -p wordpress/プロジェクトのファイルとディレクトリのリスト:
docker-compose.yml:これはdocker-composeの設定ファイルで、新しいdocker-composeプロジェクトを開始するときに作成する必要があります。
nginx/:このディレクトリは、仮想ホストなどの追加のnginx設定に使用されます。
db-data/:mysqlデータのためのボリューム/ディレクトリ。’/var/lib/mysql’からのデータはdb-dataディレクトリにマウントされます。
logs/:アプリケーションログ、nginx、mariadb、php-fpmのためのディレクトリ。
wordpress/: すべてのWordPressファイルはそのディレクトリにあります。
「nginx」ディレクトリに、WordPressの仮想ホストのための新しい設定ファイルを作成します。
新しいファイルwordpress.confを作成します:
vim nginx/wordpress.conf以下の設定を貼り付けます:
server {
listen 80;
server_name wp-hakase.co;
root /var/www/html;
index index.php;
access_log /var/log/nginx/hakase-access.log;
error_log /var/log/nginx/hakase-error.log;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass wordpress:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}ファイルを保存してvimを終了します。
ステップ4 - Docker-Composeの設定
このステップでは、docker-compose.ymlファイルの編集を開始します。docker-composeプロジェクトを開始する際は、まずdocker-compose.ymlファイルを作成することを確認してください。
vimでdocker-compose.ymlを編集します:
vim docker-compose.ymlサービスを定義します。最初の行ではNginxを定義します。公式のDockerイメージであるNginxの最新バージョンを使用し、コンテナのポート80をホストのポート80にマッピングします。次に、Dockerボリュームを設定します。Nginxの仮想ホスト設定のためのボリューム、Nginxのログファイルのためのボリューム、Webルートディレクトリのボリューム’/var/www/html’を設定します。NginxコンテナはWordPressコンテナにリンクされています。
以下の設定を貼り付けます:
nginx:
image: nginx:latest
ports:
- '80:80'
volumes:
- ./nginx:/etc/nginx/conf.d
- ./logs/nginx:/var/log/nginx
- ./wordpress:/var/www/html
links:
- wordpress
restart: always次に、MySQLサーバーを定義します。MariaDBイメージの最新バージョンを使用します。コンテナのポート3306をマッピングし、環境変数’MYSQL_ROOT_PASSWORD’でMySQLのルートパスワードを設定します。最後に、MySQLデータディレクトリのためのコンテナボリュームを設定します。
以下の設定を貼り付けます:
mysql:
image: mariadb
ports:
- '3306:3306'
volumes:
- ./db-data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=aqwe123
restart: always次に、PHP-FPM 7.0がインストールされたWordPress 4.7 Dockerイメージを使用してWordPressサービスを設定します。PHP-FPMのポートを9000に設定し、Webディレクトリ’/var/www/html’のDockerボリュームをホストディレクトリ’wordpress’に設定し、WordPress環境変数を定義してデータベースを設定し、WordPressサービスをmysqlにリンクします。
以下の設定を貼り付けます:
wordpress:
image: wordpress:4.7.1-php7.0-fpm
ports:
- '9000:9000'
volumes:
- ./wordpress:/var/www/html
environment:
- WORDPRESS_DB_NAME=wpdb
- WORDPRESS_TABLE_PREFIX=wp_
- WORDPRESS_DB_HOST=mysql
- WORDPRESS_DB_PASSWORD=aqwe123
links:
- mysql
restart: alwaysdocker-compose.ymlファイルに3つの部分を追加した後、ファイルを保存してvimエディタを終了します。
私たちのdocker-compose設定は準備完了です。
ステップ5 - Docker-composeの実行
Docker Composeで新しいコンテナを作成し始めます。wordpress-composeディレクトリに移動し、composeファイルに基づいて新しいコンテナを開始します。
cd ~/wordpress-compose/
docker-compose up -dコマンドの結果を見ることができます。3つのコンテナが作成されました。psオプションでコンテナの状態を確認しましょう:
docker-compose ps以下が結果です:

コンテナからのログ出力を確認したい場合は、以下のコマンドを使用できます:
docker-compose logs nginx
docker-compose logs mysql
docker-compose logs wordpressコンテナログ:

注意:
WordPressコンテナログにMySQL接続拒否のエラーが表示される場合は、無視してください。
ステップ6 - Wordpressのインストール
このステップを行う前に、システム上の利用可能なポート/オープンポートを確認します。ポート80、3306、および9000の3つのポートが開いていることを確認してください。
netstat -plntu結果は以下の通りです:

今、Webブラウザを開き、サーバーのURLまたはIPアドレスを入力します。
WordPressのインストールページが表示されます。言語を選択し、「続ける」をクリックします。

サイトのタイトル、管理者ユーザーとパスワード、メールアドレスなどのウェブサイトの詳細を入力し、「Wordpressをインストール」をクリックします。

「Wordpress管理ダッシュボード」にリダイレクトされます。

これが私のWordPressサンプル投稿「Hello World」です。

Wordpressはdocker-composeでインストールされました。
ステップ7 - Dockerコンテナへのアクセス
これはdocker-composeでコンテナにアクセスする方法に関する追加のステップです。すべてのコンテナが利用可能で、その状態を表示していることを確認します:
docker-compose psすでに3つのコンテナがありますので、各コンテナにログインしてみましょう。最初のNginxコンテナにdocker-composeコマンドでログインします。
docker-compose exec nginx bashnginx:docker-compose.ymlファイルのサービス名
bash:bashシェルコマンドを実行します
次に、WordPressの仮想ホスト設定を確認します。
cat /etc/nginx/conf.d/wordpress.conf
ファイルはコンテナ内にあります。
次に、mysqlコンテナにログインし、composeファイルのパスワードでmysqlシェルにログインします。
docker-compose exec mysql bash
mysql -u root -p
TYPE MYSQL ROOT PASSWORDデータベースのリストを表示します:
show databases;WordPressデータベースが表示されます。

「wordpress」コンテナ内では、すべてのWordPressファイルが表示されます。
docker-compose exec wordpress bash
ls -lahすべてのコンテナにアクセス可能です。
参考
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。