Apple M1 チップの macOS 環境で Colima を活用して Testcontainers を実行する方法
Docker が Docker Desktop の 利用規約 を変更したことで、大企業で働く開発者は Docker Desktop を無料で使えなくなった。 macOS 環境で無料で使うには代替 driver が必要であり、hyperkit、VirtualBox など複数の代案が出ているが、現時点では Apple M1 チップの macOS 環境ではまだ使いやすいとは言いにくい。
2023 年 8 月時点の状況は次のとおりである。
- hyperkit: Apple M1 チップ環境では動作しない。Homebrew でインストールしようとするとエラーになる。
- VirtualBox: Apple M1 チップ環境で動作可能なバージョンは Beta である。
ここでは Docker Desktop を使わず、Colima を活用して Apple M1 環境で Testcontainers を実行する最も簡単な方法を紹介する。
Docker 設定
まず、Homebrew を使って Docker をインストールする。
brew install docker
Colima 設定
次に、Homebrew を使って Colima をインストールする。
brew install colima
その後、指定した CPU とメモリで Colima を実行する。
colima start --cpu 4 --memory 8
上記のコマンドは VM を 4 CPU、8 GiB メモリで実行している。
Colima サーバーは次の sock アドレスで利用可能になる。
unix:///Users/${HOME}/.colima/default/docker.sock.
Docker クライアントを使って Colima サーバーに接続できる。
docker context ls コマンドを使ってすべてのコンテキストを確認でき、docker context use colima コマンドで Colima に切り替えられる。
% docker context ls
NAME DESCRIPTION DOCKER ENDPOINT ERROR
colima * colima unix:///Users/user/.colima/default/docker.sock
default Current DOCKER_HOST based configuration unix:///var/run/docker.sock
desktop-linux unix:///Users/user/.docker/run/docker.sock
Colima を停止する方法は次のとおりである。
colima stop
Testcontainers 設定
Apple M1
Apple M1 チップで macOS を使っている場合は、少なくとも JNA (Java Native Access) が 5.7.0 以上のバージョンで使われているか確認する必要がある。
IntelliJ IDEA で、依存関係として次のライブラリが含まれているか確認すればよい。

もしバージョンが低ければ、5.7.0 に上げればよい。
Testcontainers 環境変数
Colima を使って Testcontainers を実行するには、次の環境変数が必要である。
DOCKER_HOST=unix://${HOME}/.colima/default/docker.sock
TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock
TESTCONTAINERS_RYUK_DISABLED=true
これらの環境変数が必要な理由は次のとおりである。
DOCKER_HOST: Colima の sock アドレスを指定する。TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE: コンテナ内部の sock アドレスを指定する。TESTCONTAINERS_RYUK_DISABLED: Ryuk を無効化する。無効化しない場合、コンテナが終了せず、テストがタイムアウトすることがある。
Bash/Zsh シェルでは、次のように環境変数を宣言して Docker ホスト を上書きできる。
~/.bashrc or ~/.zshrc
export TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock
export DOCKER_HOST="unix://${HOME}/.colima/docker.sock"
export TESTCONTAINERS_RYUK_DISABLED=true
変更後は、環境変更を反映するために IntelliJ IDEA を再起動する必要がある。