Quarkus は、開発モードで動かすと、使用しているミドルウェアをコンテナで起動してくれる Dev サービスという機能があります。開発環境に環境を構築しないで良いのはとても楽です。
Dev サービス は、その中で Testcontainers を使用しており、Testcontainers は podman と docker の両方に対応してます。
結果
Windows で podman を使っているとダメでした。
追記
2023年12月1日時点で試したところ、動くようになってました!
原因
ログは以下です。
2023-05-23 17:12:01,954 WARN [org.tes.doc.DockerClientProviderStrategy] (build-45) Unknown DOCKER_HOST scheme ssh, skipping the strategy test... 2023-05-23 17:12:01,998 INFO [org.tes.doc.DockerMachineClientProviderStrategy] (build-45) docker-machine executable was not found on PATH ([略]) 2023-05-23 17:12:01,999 ERROR [org.tes.doc.DockerClientProviderStrategy] (build-45) Could not find a valid Docker environment. Please check configuration. Attempted configurations were: EnvironmentAndSystemPropertyClientProviderStrategy: failed with exception IllegalArgumentException (Unsupported protocol scheme: ssh://root@localhost:50725/run/podman/podman.sock)As no valid configuration was found, execution cannot continue. See https://www.testcontainers.org/on_failure.html for more details. 2023-05-23 17:12:02,009 WARN [io.qua.dep.IsDockerWorking] (build-45) Unable to connect to DOCKER_HOST URI ssh://root@localhost:50725/run/podman/podman.sock, make sure Docker is running on the specified host 2023-05-23 17:12:02,553 INFO [io.qua.dep.dev.IsolatedDevModeMain] (main) Attempting to start live reload endpoint to recover from previous Quarkus startup failure
podman は SSH を使用してリモートからの接続を受けるけるため、DOCKER_HOST に該当する物が ssh://
で始まります。Testcontainers はこれをサポートしてないらしく失敗しました。
追記(2023年12月1日)
Podman が /run/podman/podman.sock
で接続を受けるようになっていました。
対処法
何もしなくても動きます!
以下のどれかの方法で Dev サービスが使えるようになります。
- Podman Desktop で作成された Linux に Java をインストールして、Mavenを実行しましょう。
- Windows に docker を入れましょう。
- リモートの docker を使いましょう。
- Mac か Linux 上で開発する。
Windows に docker を入れる方法は以下にあります。
Testcontainers でリモートの docker を使うには環境変数 DOCKER_HOST
を設定するか、 ~/.testcontainers.properties
ファイルで以下を設定します。
docker.host=tcp://<リモートのIP>:<ポート>