© chuyuss/Shutterstock.com
Cloud Compendium
Testcontainers, JUnit 5 und Vaadin

Docker dir einen

Docker hier, Docker da, am besten gleich als Kubernetes-Cluster. Das ist für diejenigen, die sich in der Zukunft mit den Großen messen wollen. Man weiß ja nie, wie schnell man skalieren muss und Milliardär wird. Aber da gibt es noch den Rest, der mit den ganz gewöhnlichen Szenarien klarkommen muss. Keine Sorge, dieser Artikel ist keine Einführung in Docker.

Sven Ruppert


Seien wir bescheiden und nehmen an, dass wir nur ein paar Docker-Container benötigen, um unsere Herausforderungen zu meistern. Docker als Basis zu nehmen, wenn man mit verschiedenen Systemen eine Komposition aufbauen muss, ist eine rundweg solide Entscheidung. Schnell ist der Downloadlink gefunden und dank unserer hervorragenden Internetinfrastruktur findet man sich schnell als stolzer Docker-Installateur wieder. Ein paar Klicks auf die richtige Stelle am Bildschirm und schon läuft die Basisinfrastruktur.Und jetzt? Ja, jetzt kommt der lästige Teil, die Verwendung von Docker selbst. Aber wollte man eigentlich nicht nur mal eben eine Datenbank in einer PostgreSQL-Instanz ausprobieren?Der manuelle Weg könnte dann so aussehen: Nachdem der Befehl docker pull postgres auf der Kommandozeile ausgeführt worden ist, befindet sich das Image auf dem lokalen Rechner und ist bereit, gestartet zu werden. Ein docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres erzeugt dann einen Container, startet ihn und setzt das Passwort auf mysecretpassword. Ein docker ps zeigt, dass der Container läuft. Voller Optimismus startet man nun das SQL-Werkzeug seiner Wahl und möchte sich zu der frisch geschlüpften PostgreSQL verbinden. Und hier beginnt auch schon das Dilemma.Eine Verbindung à la jdbc:postgresql://localhost:5432/postgres funktioniert nicht. Da war doch noch was? Genau, die Ports sind nicht nach draußen freigegeben. Und so geht das dann erst einmal weiter. Nachdem man alles im Internet zusammengesucht hat, stellt sich die Frage, wie man alle Kommandos so in das Projekt einbinden kann, dass es unfallfrei verwendbar ist. Und dann war da noch das Dilemma mit der CI-Strecke. TestcontainersDa man mit diesen Herausforderungen nicht allein auf der Welt ist, besteht die Chance, dass dieses Problem schon andere so richtig genervt hat und daraus Lösungen entstanden sind. Eine dieser möglichen Lösungen ist das Projekt Testcontainers. Als Erstes müssen dem Projekt die notwendigen Abhängigkeiten hinzugefügt werden. Wird Maven verwendet, kann das folgendermaßen aussehen: org.testcontainers testcontainers 1.10.6 testtry (GenericContainer container = new GenericContainer("postgres")) { container.start(); // ... use the container // no need to call stop() afterwards}```bash[main] INFO org.testcontainers.dockerclient.DockerClientProviderStrategy - Loade...

Cloud Compendium
Testcontainers, JUnit 5 und Vaadin

Docker dir einen

Docker hier, Docker da, am besten gleich als Kubernetes-Cluster. Das ist für diejenigen, die sich in der Zukunft mit den Großen messen wollen. Man weiß ja nie, wie schnell man skalieren muss und Milliardär wird. Aber da gibt es noch den Rest, der mit den ganz gewöhnlichen Szenarien klarkommen muss. Keine Sorge, dieser Artikel ist keine Einführung in Docker.

Sven Ruppert


Seien wir bescheiden und nehmen an, dass wir nur ein paar Docker-Container benötigen, um unsere Herausforderungen zu meistern. Docker als Basis zu nehmen, wenn man mit verschiedenen Systemen eine Komposition aufbauen muss, ist eine rundweg solide Entscheidung. Schnell ist der Downloadlink gefunden und dank unserer hervorragenden Internetinfrastruktur findet man sich schnell als stolzer Docker-Installateur wieder. Ein paar Klicks auf die richtige Stelle am Bildschirm und schon läuft die Basisinfrastruktur.Und jetzt? Ja, jetzt kommt der lästige Teil, die Verwendung von Docker selbst. Aber wollte man eigentlich nicht nur mal eben eine Datenbank in einer PostgreSQL-Instanz ausprobieren?Der manuelle Weg könnte dann so aussehen: Nachdem der Befehl docker pull postgres auf der Kommandozeile ausgeführt worden ist, befindet sich das Image auf dem lokalen Rechner und ist bereit, gestartet zu werden. Ein docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres erzeugt dann einen Container, startet ihn und setzt das Passwort auf mysecretpassword. Ein docker ps zeigt, dass der Container läuft. Voller Optimismus startet man nun das SQL-Werkzeug seiner Wahl und möchte sich zu der frisch geschlüpften PostgreSQL verbinden. Und hier beginnt auch schon das Dilemma.Eine Verbindung à la jdbc:postgresql://localhost:5432/postgres funktioniert nicht. Da war doch noch was? Genau, die Ports sind nicht nach draußen freigegeben. Und so geht das dann erst einmal weiter. Nachdem man alles im Internet zusammengesucht hat, stellt sich die Frage, wie man alle Kommandos so in das Projekt einbinden kann, dass es unfallfrei verwendbar ist. Und dann war da noch das Dilemma mit der CI-Strecke. TestcontainersDa man mit diesen Herausforderungen nicht allein auf der Welt ist, besteht die Chance, dass dieses Problem schon andere so richtig genervt hat und daraus Lösungen entstanden sind. Eine dieser möglichen Lösungen ist das Projekt Testcontainers. Als Erstes müssen dem Projekt die notwendigen Abhängigkeiten hinzugefügt werden. Wird Maven verwendet, kann das folgendermaßen aussehen: org.testcontainers testcontainers 1.10.6 testtry (GenericContainer container = new GenericContainer("postgres")) { container.start(); // ... use the container // no need to call stop() afterwards}```bash[main] INFO org.testcontainers.dockerclient.DockerClientProviderStrategy - Loade...

Neugierig geworden?


   
Loading...

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang