このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker入門】バインドマウントでWordPressコンテナの構築②

「バインドマウントでWordPressコンテナの構築①」の続きです。Docker Composeコマンドを使って、バインドマウント機能を用いて、WordPressコンテナを構築していきます。
「バインドマウントでWordpressコンテナの構築」は次の2部に分けて解説しています。
作成するコンテナのイメージは下図のとおりです。

不要なDockerオブジェクトの削除
まず、不要なDockerオブジェクトをすべて削除しておきます。
以下のコマンドを実行します。
・「docker system prune -a」コマンドを実行します。
Are you sure you want to continue? [y/N] の質問には「y」と入力します。
PS C:\Users\joeac> docker system prune -a
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
Are you sure you want to continue? [y/N] y
Deleted Containers:
92033674508c22ef1b32925d07680e567eb61a81bc1a081ef6a93c6776788399
6dffb53fc77e4c8d077e75e6ab2e7f07b25f69325bd2f2b65f88ed7f8444d8b5
Deleted Networks:
wordpress1_default
Deleted Images:
untagged: wordpress:6.5
untagged: wordpress@sha256:e61ec4b26e768f5068fbf118e3701529fe6399d1910a66cafb4a01983e52863d
deleted: sha256:bd7cf29c56a85d78b276968fc568df755e1d53ccb4fa61f8a8537725e58326dd
deleted: sha256:ae7d2d553b85ad697c639272e4e82a73401aead6bea71001f23e452be7e41ff3
...(省略)...
deleted: sha256:a483da8ab3e941547542718cacd3258c6c705a63e94183c837c9bc44eb608999
untagged: mariadb:10.8
untagged: mariadb@sha256:456709ab146585d6189da05669b84384518baecd83670c9e5221f8c20a47cf1e
deleted: sha256:d198cd11e8fce9d331f9f90c93406eb8533399812b7946cbabf6242325e534e8
deleted: sha256:625166392dfd64d437dc33c0df475d36df2c7ae1322b4493453ae2326bfe525a
deleted: sha256:2074c746db89c132665f980b8138eaa62d3066fa2ab937feb2028a52b8b02c7b
deleted: sha256:2b447039993cc0cbd39f81b224548959d2a66aa9391e1210ff138cffa5aae14a
deleted: sha256:862e08614baf14b3a70e4d05b0f250014ff49b7eb0e22224b2b796df0e916207
deleted: sha256:161fcbe39e24efa8f649c0fca37e230821dce2b5eb3ed2b45e0196aecd51183c
deleted: sha256:b4c9ca4e1e132efbf68176a98777551027c89cca182b1416c459427c61aa5c8f
deleted: sha256:cf4669588596dad2da86c26bea5360c3b11340dd2f03faea1812417915eb4d28
deleted: sha256:966e94ab6e166fb358a208cfd8169d22dea352501c96700eb7f45092a2962ee6
Total reclaimed space: 1.114GB
PS C:\Users\joeac>
・「docker system prune -a」コマンドで削除されなかったDockerオブジェクトは、個別に削除しておきます。

compose.yaml の作成
ディレクトリの作成と移動
Docker Composeでコンテナを作成するには、「compose.yaml」ファイルが必要になります。
デフォルトでは、カレントディレクトリにある「compose.yaml」ファイルが読み込まれるため、作業ディレクトリに移動しておきます。
・「cd desktop/docker」コマンドを実行します。
PS C:\Users\joeac> cd desktop/docker
PS C:\Users\joeac\Desktop\docker>
「compose.yaml」ファイルを保存する「wordpress1」ディレクトリを作成して、作成したディレクトリに移動します。次のコマンドを実行します。
- 「mkdir wordpress2」コマンド
- 「cd wordpress2」コマンド
PS C:\Users\joeac\Desktop\docker> mkdir wordpress2
Directory: C:\Users\joeac\Desktop\docker
Mode LastWriteTime Length Name
---- ------------- ------ ----
d---- 2024/04/07 14:14 wordpress2
PS C:\Users\joeac\Desktop\docker> cd wordpress2
PS C:\Users\joeac\Desktop\docker\wordpress2>
VSCodeの起動
VSCodeで「compose.yaml」ファイルを作成します。
・「code compose.yaml」コマンドを実行します。
PS C:\Users\joeac\Desktop\docker\apache> code compose.yaml
VSCodeが起動します。

「compose.yaml」ファイルの編集
・「compose.yaml」ファイルを以下のように編集して保存します。
services:
wpdb:
image: mariadb:10.8
environment:
MARIADB_ROOT_PASSWORD: root-pass
MARIADB_DATABASE: database
MARIADB_USER: wp-user
MARIADB_PASSWORD: wp-pass
volumes:
- db-data:/var/lib/mysql
wordpress:
image: wordpress:6.5
depends_on:
- wpdb
environment:
WORDPRESS_DB_HOST: wpdb
WORDPRESS_DB_NAME: database
WORDPRESS_DB_USER: wp-user
WORDPRESS_DB_PASSWORD: wp-pass
ports:
- "80:80"
volumes:
- ./html:/var/www/html
volumes:
db-data:
上の定義の意味は、以下のコンテンツで解説しています。
コンテナの作成と実行
・「docker compose up -d」コマンドを実行します。
このコマンドは、「compose.yaml」ファイルを配置した場所で実行する必要があります。
PS C:\Users\joeac\Desktop\docker\wordpress2> docker compose up -d
[+] Running 31/2
✔ wordpress 21 layers [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 12.2s
✔ wpdb 8 layers [⣿⣿⣿⣿⣿⣿⣿⣿] 0B/0B Pulled 16.1s
[+] Running 2/4
- Network wordpress2_default Created 1.1s
- Volume "wordpress2_db-data" Created 1.0s
✔ Container wordpress2-wpdb-1 Started 0.6s
✔ Container wordpress2-wordpress-1 Started 0.8s
「Container wordpress2-wpdb-1」と「Container wordpress2-wordpress-1」というログが、表示されたら、コンテナが作成されています。
・Docker Desktopでコンテナを確認します。
MariaDBとWordPressの2つのコンテナが作成されて動作しているため、コンテナを示すアイコンが緑色になっています。

コンテナが、緑色になってない場合は、何らかの問題が発生しています。
「compose.yaml」の定義の間違いが疑わしいので、トラブルシューティングを行ってください。
「./wordpress2」ディレクトリの確認
「./wordpress2」ディレクトリ内のファイルとディレクトリを確認します。
・「ls」コマンドを実行します。
PS C:\Users\joeac\Desktop\docker\wordpress2> ls
Directory: C:\Users\joeac\Desktop\docker\wordpress2
Mode LastWriteTime Length Name
---- ------------- ------ ----
da--- 2024/04/07 14:26 html
-a--- 2024/04/07 14:23 571 compose.yaml
「html」ディレクトリが作成されていることが確認できます。
・「ls html」コマンドを実行します。
「html」ディレクトリ内のディレクトリやファイルが表示されます。
PS C:\Users\joeac\Desktop\docker\wordpress2> ls html
Directory: C:\Users\joeac\Desktop\docker\wordpress2\html
Mode LastWriteTime Length Name
---- ------------- ------ ----
da--- 2024/04/03 3:12 wp-admin
da--- 2024/04/03 3:12 wp-content
da--- 2024/04/03 3:12 wp-includes
-a--- 2024/04/04 2:51 261 .htaccess
-a--- 2020/02/06 15:33 405 index.php
-a--- 2024/01/01 9:02 19915 license.txt
-a--- 2023/12/08 23:13 7401 readme.html
-a--- 2024/02/13 23:19 7387 wp-activate.php
-a--- 2020/02/06 15:33 351 wp-blog-header.php
-a--- 2023/06/14 23:11 2323 wp-comments-post.php
-a--- 2024/04/04 2:49 5512 wp-config-docker.php
-a--- 2023/11/23 2:44 3012 wp-config-sample.php
-a--- 2024/04/07 14:26 5616 wp-config.php
-a--- 2023/05/31 3:48 5638 wp-cron.php
-a--- 2022/11/27 6:01 2502 wp-links-opml.php
-a--- 2023/07/16 21:16 3927 wp-load.php
-a--- 2024/01/17 2:31 50917 wp-login.php
-a--- 2023/09/16 15:50 8525 wp-mail.php
-a--- 2024/03/02 19:47 28427 wp-settings.php
-a--- 2023/06/20 3:27 34385 wp-signup.php
-a--- 2023/06/22 23:36 4885 wp-trackback.php
-a--- 2024/03/02 22:49 3246 xmlrpc.php
ホストのディレクトリとコンテナ内のディレクトリがバインドマウントされていることが分かります。
「index.php」ファイルの確認
・「code ./html/index.php」コマンドを実行します。
PS C:\Users\joeac\Desktop\docker\wordpress2> code ./html/index.php
「index.php」ファイルの内容が表示されます。

WordPressにアクセスする
・Webブラウザを起動して、URLに「localhost」と入力します。

WordPressの初期セットアップのページが表示されます。
・「日本語」を選択して「次へ」ボタンをクリックします。
日本語で、WordPressの初期セットアップが進んでいきます。

ここでは、WordPressの初期セットアップの完了まで進めて、サイトの構築までを行いません。
バインドマントを利用することで、ホスト側でファイルやディレクトリを操作できるようになります。ホスト側でのファイルの変更がコンテナ側で反映されます。