testcontainers / testcontainers/testcontainers-java

[Enhancement]: Support TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE to be read from ~/.testcontainers.properties

Aperta
#8,537 3 commenti 19 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

type/enhancement
Lingua principale
Java
Stelle
8.7k
Fork
1.9k
Merge medio
2g 17h
PR unite (30g)
9

Descrizione

Module

Core

Proposal

When I understood these correctly:

… on mac with colima, the environment variable TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE is required.

This is a nuicance, when acceptance tests are run from the IDE, since then every run configuration has to include this env variable, or maybe you would have to create a template for it, etc. I tried to work around that situation by using ~/.testcontainers.properties for it, but only when I set the actual environment variable, the tests work fine.

# See https://java.testcontainers.org/features/configuration/
#     https://dotnet.testcontainers.org/custom_configuration/

docker.client.strategy=org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy

# export TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock
# TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE -> docker.socket.override
docker.socket.override=/var/run/docker.sock

# export TESTCONTAINERS_HOST_OVERRIDE=$(colima ls -j | jq -r '.address')
# TESTCONTAINERS_HOST_OVERRIDE -> host.override
host.override=192.168.106.2

# Equivalent to the DOCKER_HOST environment variable. Colons should be escaped.
# export DOCKER_HOST="unix://${HOME}/.colima/default/docker.sock"
docker.host=unix\:///Users/aek/.colima/default/docker.sock
Running Integration Tests only with properties

With only the ~/.testcontainers.properties in place, ryuk cannot be detected:

❯ ./mvnw -P runITs verify
…
2024-04-09T11:28:42.171+02:00  INFO 94314 --- [Worblehat Bookmanager] [           main] o.t.d.DockerClientProviderStrategy       : Found Docker environment with Environment variables, system properties and defaults. Resolved dockerHost=unix:///Users/aek/.colima/default/docker.sock
2024-04-09T11:28:42.173+02:00  INFO 94314 --- [Worblehat Bookmanager] [           main] org.testcontainers.DockerClientFactory   : Docker host IP address is localhost
2024-04-09T11:28:42.201+02:00  INFO 94314 --- [Worblehat Bookmanager] [           main] org.testcontainers.DockerClientFactory   : Connected to docker: 
  Server Version: 24.0.7
  API Version: 1.43
  Operating System: Ubuntu 23.10
  Total Memory: 1952 MB
2024-04-09T11:28:42.248+02:00  INFO 94314 --- [Worblehat Bookmanager] [           main] tc.testcontainers/ryuk:0.6.0             : Creating container for image: testcontainers/ryuk:0.6.0
2024-04-09T11:28:42.420+02:00  INFO 94314 --- [Worblehat Bookmanager] [           main] tc.testcontainers/ryuk:0.6.0             : Container testcontainers/ryuk:0.6.0 is starting: 6e2df29e93ed5ed0468fcf1ef7874729141880a77c450881d9d2e0cfe6d89de0
2024-04-09T11:29:43.096+02:00 ERROR 94314 --- [Worblehat Bookmanager] [           main] tc.testcontainers/ryuk:0.6.0             : Could not start container

java.lang.IllegalStateException: Wait strategy failed. Container is removed
        at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:511)
        at org.testcontainers.containers.GenericContainer.lambda$doStart$0(GenericContainer.java:354)
 …
Caused by: org.testcontainers.containers.ContainerLaunchException: Timed out waiting for log output matching '.*Started.*'
        at org.testcontainers.containers.wait.strategy.LogMessageWaitStrategy.waitUntilReady(LogMessageWaitStrategy.java:47)
        at org.testcontainers.containers.wait.strategy.AbstractWaitStrategy.waitUntilReady(AbstractWaitStrategy.java:52)
        at org.testcontainers.containers.GenericContainer.waitUntilContainerStarted(GenericContainer.java:909)
        at org.testcontainers.containers.GenericContainer.tryStart(GenericContainer.java:500)
        ... 117 common frames omitted
Running Integration Tests with TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE

After exporting TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE connection is refused:

❯ export TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock
❯ ./mvnw -P runITs verify
…
2024-04-09T11:30:41.183+02:00  INFO 95453 --- [Worblehat Bookmanager] [           main] o.t.d.DockerClientProviderStrategy       : Found Docker environment with Environment variables, system properties and defaults. Resolved dockerHost=unix:///Users/aek/.colima/default/docker.sock
2024-04-09T11:30:41.186+02:00  INFO 95453 --- [Worblehat Bookmanager] [           main] org.testcontainers.DockerClientFactory   : Docker host IP address is localhost
2024-04-09T11:30:41.214+02:00  INFO 95453 --- [Worblehat Bookmanager] [           main] org.testcontainers.DockerClientFactory   : Connected to docker: 
  Server Version: 24.0.7
  API Version: 1.43
  Operating System: Ubuntu 23.10
  Total Memory: 1952 MB
2024-04-09T11:30:41.256+02:00  INFO 95453 --- [Worblehat Bookmanager] [           main] tc.testcontainers/ryuk:0.6.0             : Creating container for image: testcontainers/ryuk:0.6.0
2024-04-09T11:30:41.422+02:00  INFO 95453 --- [Worblehat Bookmanager] [           main] tc.testcontainers/ryuk:0.6.0             : Container testcontainers/ryuk:0.6.0 is starting: 98be78654377709c7a20226dab1d74e5172f5a1ba93d882f4c73c1b59b53c96e
2024-04-09T11:30:42.011+02:00  INFO 95453 --- [Worblehat Bookmanager] [           main] tc.testcontainers/ryuk:0.6.0             : Container testcontainers/ryuk:0.6.0 started in PT0.755355S
2024-04-09T11:30:42.018+02:00  WARN 95453 --- [Worblehat Bookmanager] [containers-ryuk] o.t.utility.RyukResourceReaper           : Can not connect to Ryuk at localhost:32802

java.net.ConnectException: Connection refused
        at java.base/sun.nio.ch.Net.pollConnect(Native Method)
        at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:682)
        at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542)
        at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:592)
        at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327)
        at java.base/java.net.Socket.connect(Socket.java:751)
        at org.testcontainers.utility.RyukResourceReaper.lambda$null$1(RyukResourceReaper.java:105)
        at org.rnorth.ducttape.ratelimits.RateLimiter.doWhenReady(RateLimiter.java:27)
        at org.testcontainers.utility.RyukResourceReaper.lambda$maybeStart$2(RyukResourceReaper.java:101)
        at java.base/java.lang.Thread.run(Thread.java:1583)
Running Integration Tests with TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE & TESTCONTAINERS_HOST_OVERRIDE
❯ export TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE=/var/run/docker.sock
❯ export TESTCONTAINERS_HOST_OVERRIDE=$(colima ls -j | jq -r '.address')
❯ ./mvnw -P runITs verify
…
2024-04-09T11:33:06.887+02:00  INFO 96744 --- [Worblehat Bookmanager] [           main] o.t.d.DockerClientProviderStrategy       : Found Docker environment with Environment variables, system properties and defaults. Resolved dockerHost=unix:///Users/aek/.colima/default/docker.sock
2024-04-09T11:33:06.888+02:00  INFO 96744 --- [Worblehat Bookmanager] [           main] org.testcontainers.DockerClientFactory   : Docker host IP address is 192.168.106.2
2024-04-09T11:33:06.919+02:00  INFO 96744 --- [Worblehat Bookmanager] [           main] org.testcontainers.DockerClientFactory   : Connected to docker: 
  Server Version: 24.0.7
  API Version: 1.43
  Operating System: Ubuntu 23.10
  Total Memory: 1952 MB
2024-04-09T11:33:06.979+02:00  INFO 96744 --- [Worblehat Bookmanager] [           main] tc.testcontainers/ryuk:0.6.0             : Creating container for image: testcontainers/ryuk:0.6.0
2024-04-09T11:33:07.147+02:00  INFO 96744 --- [Worblehat Bookmanager] [           main] tc.testcontainers/ryuk:0.6.0             : Container testcontainers/ryuk:0.6.0 is starting: 51fee1161c67056b960ed87faabc665665df43b389acbd3d08e7ea805abdf44b
2024-04-09T11:33:07.770+02:00  INFO 96744 --- [Worblehat Bookmanager] [           main] tc.testcontainers/ryuk:0.6.0             : Container testcontainers/ryuk:0.6.0 started in PT0.790874S
2024-04-09T11:33:07.782+02:00  INFO 96744 --- [Worblehat Bookmanager] [           main] o.t.utility.RyukResourceReaper           : Ryuk started - will monitor and terminate Testcontainers containers on JVM exit
2024-04-09T11:33:07.783+02:00  INFO 96744 --- [Worblehat Bookmanager] [           main] org.testcontainers.DockerClientFactory   : Checking the system...
2024-04-09T11:33:07.784+02:00  INFO 96744 --- [Worblehat Bookmanager] [           main] org.testcontainers.DockerClientFactory   : ✔︎ Docker server version should be at least 1.6.0

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia tracciando come Testcontainers legge ~/.testcontainers.properties e risolve TESTCONTAINERS_DOCKER_SOCKET_OVERRIDE. Esegui ./mvnw -P runITs verify usando solo il file delle proprietà; il lavoro è completato quando l'override del socket viene rispettato e Ryuk si avvia correttamente senza la variabile d'ambiente.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
docker, java
Ambito
testing
Tipo di issue
Funzionalità
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Attiva
Chiarezza
Abbastanza chiara
Idoneità per principianti
68/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.