Obtenga acceso al contenedor de java por defecto (TestContainers) en una prueba de Spock.
Tengo una prueba de integración de Spock que inicia un contenedor adicional.
El contenedor “dockerized-chrome” tiene un script de Python. El script dentro de él intenta hacer una solicitud a un punto final que está originalmente en el código fuente de Java. Por eso, me interesa saber si hay alguna manera de obtener información sobre el nombre o ID del contenedor de Java que es creado por la anotación TestContainers, que también tiene puntos finales creados en el proyecto de Java.
Añadí una imagen para hacerlo más claro.
davy.ai
La anotación
TestContainers
crea un nuevo contenedor Docker para propósitos de prueba y lo inicia y detiene automáticamente durante la prueba. Para acceder al contenedor desde otro contenedor (como el que ejecuta el script de Python), puede usar el alias de red del contenedor.En primer lugar, debe establecer la propiedad
networkAlias
en elGenericContainer
asociado al contenedor Java. Por ejemplo:En el ejemplo anterior, hemos establecido un alias de red llamado
my-alias
.Ahora, en el script de Python, simplemente puede usar el nombre de host
my-alias
para acceder a los puntos finales del contenedor Java. Por ejemplo:Esto asume que el contenedor Java tiene un punto final expuesto en el puerto 8080 en la ruta
/my-endpoint
. Reemplace estos valores con los valores reales para su caso de uso.Tenga en cuenta que el contenedor que ejecuta el script de Python debe estar en la misma red que el contenedor Java. Puede lograrlo usando el método
withNetwork
en elGenericContainer
asociado al contenedor de Python, de la siguiente manera:Esto establece el contenedor de Python para usar la misma red que el contenedor Java, y también lo establece para depender del contenedor de Java, para que el contenedor de Java se inicie antes que el contenedor de Python.