testcontainers / testcontainers/testcontainers-java

[Bug]: Elasticsearch: Incorrectly detected OSS image

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

Nessuno ha ancora preso questa issue.

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

Descrizione

Module

Elasticsearch

Testcontainers version

1.19.8

Using the latest Testcontainers version?

Yes

Host OS

Windows

Host Arch

amd64

Docker version
Client:
 Version:           26.1.0-rd
 API version:       1.44 (downgraded from 1.45)
 Go version:        go1.21.9
 Git commit:        cca8e72
 Built:             Tue Apr 23 16:26:59 2024
 OS/Arch:           windows/amd64
 Context:           default

Server:
 Engine:
  Version:          25.0.5
  API version:      1.44 (minimum version 1.24)
  Go version:       go1.21.10
  Git commit:       e63daec8672d77ac0b2b5c262ef525c7cf17fd20
  Built:            Sun May 12 07:25:43 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          v1.7.10
  GitCommit:        4e1fe7492b9df85914c389d1f15a3ceedbb280ac
 runc:
  Version:          1.1.12
  GitCommit:        51d5e94601ceffbbd85688df1c928ecccbfa4685
 docker-init:
  Version:          0.19.0
  GitCommit:
What happened?

We are currently trying to use Azure Container registry (ACR) to serve as a pull through cache for Docker images. That one has quite some limitations (e.g.: https://github.com/Azure/acr/issues/599#issuecomment-1751689962), forcing us to configure the Elasticsearch Testcontainer like this (please note the library/ prefix):

            elasticsearchContainer = new ElasticsearchContainer(
                DockerImageName.parse("library/elasticsearch")
                    .asCompatibleSubstituteFor("docker.elastic.co/elasticsearch/elasticsearch")
                    .withTag("8.10.4")

            )

This one fails, as it claims it tries to use the OSS version of Elasticsearch while activating a password, even though it is not true (it is not the OSS image...) + I override this anyway with asCompatibleSubstituteFor

Relevant log output
2024-07-05T13:50:43.285Z  INFO 422 --- [dataview] [           main] ContainersSpringContextCustomizerFactory : Warming up the elastic database
2024-07-05T13:50:43.287Z  WARN 422 --- [dataview] [           main] o.t.e.ElasticsearchContainer             : library/elasticsearch is not supported anymore after 7.10.2. Please switch to docker.elastic.co/elasticsearch/elasticsearch
2024-07-05T13:50:43.332Z ERROR 422 --- [dataview] [           main] o.s.boot.SpringApplication               : Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'de.mt.dataview.config.ElasticsearchTestContainer': You can not activate security on Elastic OSS Image. Please switch to the default distribution
Additional Information

Seems like the detection for isOss is could be improved - or maybe removed as it seems marked deprecated anyway...

https://github.com/testcontainers/testcontainers-java/blob/b4b1c2022d540177ada794b028c99fba5daeba1f/modules/elasticsearch/src/main/java/org/testcontainers/elasticsearch/ElasticsearchContainer.java#L108-L117

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 con la sezione collegata di ElasticsearchContainer.java intorno alle righe 108-117 e verifica come il nome dell’immagine venga classificato come OSS quando viene utilizzato l’alias library/elasticsearch. Riproduci la configurazione segnalata con l’immagine 8.10.4 e verifica che il container non rifiuti più l’attivazione della sicurezza in quanto immagine OSS, preservando al contempo il comportamento dell’avviso di compatibilità.

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

Valutazione

Stack tecnologico
docker, elasticsearch, java
Ambito
databases, testing
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
42/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.