Docker は WordPress のテーマ開発に使っているだけですのであまり、いや、まったく詳しくはないのですが、Docker Compose に V2 云々という記事が目につきましたので少し調べてみました。
01Docker Compose V2
Docker や Docker Compose とは何かといったことは書いていませんし、書けません(笑)。それまで LAMP(Apache…)でローカルサーバー環境を構築してきたものが Docker 一発でできることを知り、こりゃ便利だと、この 1、2年使ってきた程度です。
Docker Compose も「クィックスタート: Compose と WordPress」を参考にして WordPress を立ち上げているレベルです。
で、最近 Docker Compose が V2 になったという記事を目にし(かなり遅いのですが…)こりゃいかんと少し調べた結果です。
02現在の環境
まず自分の環境を調べてみます。
$ docker version
Client: Docker Engine - Community
Version: 25.0.2
API version: 1.44
Go version: go1.21.6
Git commit: 29cf629
Built: Thu Feb 1 00:23:19 2024
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 25.0.2
API version: 1.44 (minimum version 1.24)
Go version: go1.21.6
Git commit: fce6e0c
Built: Thu Feb 1 00:23:19 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.28
GitCommit: ae07eda36dd25f8a1b98dfbf587313b99c0190bb
runc:
Version: 1.1.12
GitCommit: v1.1.12-0-g51d5e94
docker-init:
Version: 0.19.0
GitCommit: de40ad0
まず、Docker Engine のバージョンです。OS は Ubuntu ですので特に気にすることなく最新バージョンになっています。
$ docker-compose version
docker-compose version 1.26.0, build d4451659
docker-py version: 4.2.1
CPython version: 3.7.7
OpenSSL version: OpenSSL 1.1.0l 10 Sep 2019
$ docker compose version
Docker Compose version v2.24.5
続いて、Docker Compose のバージョンです。すでに V2 がインストールされています。V1 は自分でインストールしたものですが、V2 は Docker と同時にインストールされるようです。
なお、V2 の起動コマンドはハイフンなしの docker compose
です。
03Docker Compose V1 と V2
詳しくは Docker Docs にありますが、V1 は 2023年7月でサポートが終了しています。
最新の Docker Desktop を使用している場合は、すでに V2 がデフォルトになっており、コマンドの docker-compose
も V2 のエイリアスになっているとあります。
Linux にも Docker Desktop があるようですが、私の場合は Docker を自分で入れており、その場合は、Docker をリポジトリからバージョンアップしていれば自動で入りますし、そうでなければ手作業でインストールすることになります。
整理しますと、Compose V1 は単独のプログラムでしたが、Compose V2 は Docker CLI に統合されているということです。言語も Python から Docker と同じ Go に変わっています。
その他、変更点が Compose V2 への移行 に書かれていますが、基本的には下位互換が図られているようです。私の場合で言えば、docker-compose.yml がそのまま使えるかどうかの確認で問題なさそうです。
04V2 の Compose ファイル(YAML)
実際に試してみます。
実際に使っているのはこのままではありませんが、クィックスタート: Compose と WordPress にある docker-compose.yml
で試してみます。
$ docker-compose up -d
Creating network "sample_default" with the default driver
Creating sample_db_1 ... done
Creating sample_wordpress_1 ... done
$ docker-compose down
Stopping sample_wordpress_1 ... done
Stopping sample_db_1 ... done
Removing sample_wordpress_1 ... done
Removing sample_db_1 ... done
Removing network sample_default
V1 のコマンド docker-compose up -d
で立ち上げ、確認後停止、削除しています。もちろん問題ありません。続いて、V2 で立ち上げてみます。
$ docker compose up -d
[+] Running 2/3
⠧ Network sample_default Created 2.8s
✔ Container sample-db-1 Started 0.5s
✔ Container sample-wordpress-1 Started 2.6s
$ docker compose down
[+] Running 3/3
✔ Container sample-wordpress-1 Removed 1.3s
✔ Container sample-db-1 Removed 1.7s
✔ Network sample_default Removed 0.1s
問題ないようです。ただし、これも下位互換で実行されているわけですので、この際 V2 しように変更しておこうと思います。
05V2 の Compose ファイルは compose.yaml
V2 の推奨 Composeファイルは compose.yaml
です。下位互換として docker-compose.yml
も使えますが、両方存在する場合は compose.yaml
が読み込まれます。
また、docker-compose.yml の最初に書いていた
version: '3' # 非推奨
は非推奨になりました。バージョンを書く必要はなくなりました。その他については問題はなさそうです。ですので、Docker で WordPress を立ち上げる V2 compose.yaml は、
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:
ということになります。