Docker für Java Entwickler

Ähnliche Dokumente
Docker für Entwickler

Dr. Roland Huß, ConSol* Docker für Java-Entwickler

Dr. Roland Huß ConSol* Docker für Java Entwickler

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis

Installations Guide für YAJSW und DTLDAP

Spring Dynamic Modules for OSGi Service Platforms

Build-Pipeline mit Jenkins

Medea3 Print-Client (m3_print)

Lokale Installation von DotNetNuke 4 ohne IIS

Testplan. Hochschule Luzern Technik & Architektur. Software Komponenten FS13. Gruppe 03 Horw,

Konfiguration von Igel ThinClients fu r den Zugriff via Netscaler Gateway auf eine Storefront/ XenDesktop 7 Umgebung

SRH - Kurzinformation

NEUE FUNKTIONEN IN IQ4DOCS 1.4.3

Planung für Organisation und Technik

Weblogic Server: Administration für Umsteiger

Die Backup-Voreinstellungen finden Sie in M-System Server unter dem Reiter "Wartung".

MARCANT - File Delivery System

SAPGUI-Installation. Windows Bit-Edition auf x64 (AMD) und Intel EM64T (nur die Editionen

Downloadfehler in DEHSt-VPSMail. Workaround zum Umgang mit einem Downloadfehler

ecaros2 - Accountmanager

Database Change Management für Continuous Delivery. Diana Lander und Andreas Falk NovaTec Consulting GmbH

Thomas Wagner 2009 (im Rahmen der TA) Installation von MySQL 5.0 und Tomcat 5.5

OS IDE Webserver Integration des Webservers in die IDE Wireshark Webserver II Dynamisches Webprojekt in Eclipse

Reporting Services und SharePoint 2010 Teil 1

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

The linux container engine. Peter Daum

I N S T A L L A T I O N S A N L E I T U N G

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

Übung - Konfigurieren einer Windows 7-Firewall

ADDISON Aktenlösung Automatischer Rewe-Import. Technische Beschreibung

Prodanet ProductManager WinEdition

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

Systemvoraussetzungen:

[DvBROWSER] Offline-Viewer für [DvARCHIV] und [DvARCHIVpersonal] Version 2.2

OSGi-basierte Webapplikationen Ein Erfahrungsbericht

Import und Export von Übergängern

FRILO-Aktuell Ausgabe 2/2013

NetMan Desktop Manager Vorbereitung und Konfiguration des Terminalservers

Allgemeine Anforderungen zum Einsatz von (gültig ab Version 45.xx.xx)

Benutzung der LS-Miniscanner

Anton Ochsenkühn. amac BUCH VERLAG. Ecxel für Mac. amac-buch Verlag

Container als Immutable Infrastructure. John M. Hutchison

Workshop: Eigenes Image ohne VMware-Programme erstellen

JIRA-Speicher erhoehen

Virtueller Campus. Virtueller Campus Horw mit interaktiver Steuerung. HowTo: Externe Bibliotheken

Internet Explorer Version 6

Print2CAD 2017, 8th Generation. Netzwerkversionen

Installationshinweise für OpenOffice Portable auf einem Wechseldatenträger Stand: 27. März 2003 LS Stuttgart, Kaufmännische ZPG

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

desk.modul : ABX-Lokalisierung

FIREBIRD BETRIEB DER SAFESCAN TA UND TA+ SOFTWARE AUF MEHR ALS EINEM COMPUTER

Der lokale und verteilte Fall

teamsync Kurzanleitung

HP Service Virtualization. Bernd Schindelasch 19. Juni 2013

:: Anleitung Hosting Server 1cloud.ch ::

Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten

Drucken aus der Anwendung

Installationsanleitung für das Integrity Tool zur AusweisApp Version 1.7 (Microsoft Windows) Dokumentversion 1.0

Die Installation des GeoShop Redirector für IIS (Internet Information Server, Version 4.0, 5.0 und 6.0) umfasst folgende Teilschritte:

CADEMIA: Einrichtung Ihres Computers unter Mac OS X

CMS.R. Bedienungsanleitung. Modul Cron. Copyright CMS.R Revision 1

RIS Abbild mit aktuellen Updates

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Xerox Device Agent, XDA-Lite. Kurzanleitung zur Installation

Google Earth und Telefonbücher im Internet

IBM SPSS Statistics Version 22. Installationsanweisungen für Linux (Lizenz für gleichzeitig angemeldete Benutzer)

Entwicklungsumgebungen. Packer, Vagrant, Puppet. Alexander Pacnik Mannheim,

R-ADSL2+ Einrichthinweise unter Windows 98/ME

Inhalt. 1 FAQ zum Geoportal Kamenz

Titel. System Center Configuration Manager 2012 R2 Anleitung Installation Softwareupdatepunkt und WSUS Integration

EPO Consulting GmbH. Ihr Partner für HTML5 und SAP UI5 Apps. Stand 2015/04. EPO Consulting GmbH - 1 -

Anleitung für den Elektronischen Lesesaal der Martin-Opitz Bibliothek

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Anleitung über den Umgang mit Schildern

News RSS-Export. mit tt_news und pmk_rssnewsexport. Alexander Mürb, Arthur Palmer TYPO3 User Group Stuttgart

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

PDF-Druck und PDF-Versand mit PV:MANAGER

Anwenderhandbuch logiware IO-Stick in go1984

> Soft.ZIV. Maple Mathematisches Software System

Formular»Fragenkatalog BIM-Server«

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Netzwerkversion PVG.view

Kurzpräsentation Fiat Export Programm

QTTabBar Einrichtung, ein Tutorial

Sehr geehrter Herr Pfarrer, sehr geehrte pastorale Mitarbeiterin, sehr geehrter pastoraler Mitarbeiter!

affilinet_ Flash-Spezifikationen

ELitE Bestell- und Lieferplattform für Informationen & Literatur

Die nachfolgende Anleitung hilft dem Kunden mit den nötigen Informationen zur Installation und Konfiguration der MDWorkflow-Applikation.

Windows Server 2012 RC2 konfigurieren

GITS Steckbriefe Tutorial

Deployment Deployment Seite 1 / 25

Installation der SAS Foundation Software auf Windows

TimeMachine. Installation und Konfiguration. Version 1.4. Stand Dokument: installcentos.odt

Lubuntu als Ersatz für Windows

Universal Gleismauer Set von SB4 mit Tauschtextur u. integrierten Gleismauerabschlüssen!

Transkript:

Wir unternehmen IT. Docker für Java Entwickler Dr. Roland Huß, ConSol* Software GmbH JavaLand, 24.3.2015

Agenda Docker Crash Intro Docker für Java Entwickler Integrationstests Paketierung von Anwendungen docker-maven-plugin Demo 2

Roland Huß ro14nd @ Java Developer Open Source www.jolokia.org labs.consol.de & ro14nd.de https://github.com/rhuss Konferenzsprecher JavaZone 2014 W-JAX 2014 Devoxx 2014 3

Docker Docker ist eine offene Plattform für Entwickler und Administratoren um verteilte Applikationen zu bauen, auszuliefern und zu betreiben. docker.io 4

Container versus VM Container sind isoliert, teilen sich aber den Kernel und (einige) Dateien schneller und sparsamer 5

Image read-only Dateisystem Schicht kann installiert und verteilt werden "Blaupause für einen Container" 6

Container read-write Schicht Copy-On-Write kann gestartet und gestoppt werden "Instanz eines Images" 7

Docker CLI Kommandos ps images run search pull rm rmi exec Anzeigen erzeugter Containern Anzeigen lokaler Images Erzeugen und starten von Containern Suchen von Images in einer Registry Download von Images Entfernen eines Container Entfernen eines Images Ausführen eines Kommandos im Container 8

Erweiterte Konzepte Port Mapping Container Ports können flexibel exportiert werden Container Linking Netzwerk-Verknüpfung lokaler Container Volumes Mounten lokaler Verzeichnisse Mounten von Verzeichnissen zwischen Containern Eigene Images Skriptbar via Dockerfiles 9

Demo

Docker für Java Entwickler? Integrationstests Applikations Deployment 11

Integrationstests Integrationstests prüfen Applikationen in einem realistischen Kontext der der Produktionsumgebung so nahe wie möglich kommt. 12

Integrationstests Gute Integrationstests sind Robust (aka Wiederholbar) Laufen entweder immer durch oder schlagen mit dem gleichen Test fehl Autark Minimale externe Abhängigkeiten, eigenständig Isoliert Parallele Ausführung ähnlicher Tests Schnell Kurze Turnaround-Zeiten 13

Externe Testsysteme Robust Autark Isoliert Schnell Test Systeme werden extern verwaltet und konfiguriert. Test Systems müssen installiert und verfügbar sein. Parallele Tests greifen auf das gleiche System zu und stören sich gegenseitig. Wegen paralleler Nutzung und Netzwerklatenz oft langsam. aber sind nahe an der Realität! 14

Simulierte (Mock) Testsysteme Robust Autark Isoliert Schnell Kann während des Testlaufs gestartet werden. Kann deklarativ konfiguriert werden (z.b. Citrus). Verschiedene Ports pro Testlauf können konfiguriert werden. Mock Systeme sind aufgrund begrenzter Funktionalität oft schneller. aber entsprechen nicht der Wirklichkeit! 15

Integrationstests mit Docker Robust Autark Isoliert Schnell Jeder Testlauf hat einen eigenen Container und Ausführungskontext. Ausser einer Docker Installation keine externen Abhängigkeiten. Perfekte Isolation der Container möglich. Schneller Container Start dank der Systemlevel Virtualisierung. und es kann die Realität abbilden! 16

Applikations Deployment Standard "Container" Formate für Java Enterprise Anwendungen: Web-Archive (WAR) Enterprise-Archive (EAR) Mit Docker wird der Ausführungskontext (Server) mit in den Container gepackt. Immutable Server Pattern Bei einer neuen Version der Applikation wird auch ein neuer Server deployed 17

Docker Delivery Pipeline Source Repository Docker Registry Entwicklung Bauen + Unit Test Integration Test Performance Test Akzeptanz Test Produktion 18

Servicecontainer: Artefakte und Laufzeitumgebung (z.b. Applikationsserver) werden in den gleichen Container gepackt. Ideal für Microservices. 19 Container Patterns Datencontainer: Artefakte werden in einen Datencontainer verpackt. Datencontainer wird mit einem Plattformcontainer verknüpft. Applikation wird beim Start des Plattformcontainers deployed.

Build Integration CI Server Pre- und Post-Hooks zum Starten und Stoppen von Docker Container. Aufruf der Docker CLI aus dem Build heraus: exec Ant-Task exec-maven-plugin für Maven mit Groovy aus Gradle heraus Dedizierte Maven und Gradle Plugins 20

docker-maven-plugin WTF or FTW? 21

Die 4 Überlebenden wouterd/docker-maven-plugin Wouter Danes, ING alexec/docker-maven-plugin Alex Collins spotify/docker-maven-plugin Spotify rhuss/docker-maven-plugin Roland Huß, ConSol https://github.com/rhuss/shootout-docker-maven 22

docker-maven-plugin wouterd alexec spotify rhuss API jaxrs docker-java spotify/dockerclient Apache HC Start/Stop Build/Push Image Dockerfile + Maven Config Dockerfile + custom YML Maven config + Dockerfile Maven config + Assembly + (Dockerfile) 23

docker-maven-plugin wouterd alexec spotify rhuss Logs Security Plain Plain Encrypted/ Plain URL Wait 36 57 73 90 Size LOC 2300 1600 600 4200 24

rhuss/docker-maven-plugin Einfache Konfiguration Dynamisches Portmapping Assembly um Artefakte und deren Abhängigkeiten in den Container einzubinden Upload von Containern zu einer Registry Automatischer Download von Images "Doing it the Maven way" 25

Maven Goals docker:start docker:stop docker:build docker:push Starten von Container Stoppen von Container Bauen von Images Upload zu einer Registry docker:remove Entfernen von Images docker:logs Anzeigen der Container Logs 26

Beispiel Konfiguration <images> <image> <name>jolokia/jolokia-itest</name> <build> <from>consol/tomcat-7.0</from> <assemblydescriptor>assembly.xml</assemblydescriptor> </build> <run> <ports> <port>jolokia.port:8080</port> </ports> </run> </image> </images> 27

Assembly Deskriptor <assembly> <dependencysets> <dependencyset> <includes> <include>org.jolokia:jolokia-war</include> </includes> <outputdirectory>.</outputdirectory> <outputfilenamemapping>jolokia.war</outputfilenamemapping> </dependencyset> </dependencysets> </assembly> 28

Artefakte im Container Assembly Deskriptor des maven-assemblyplugin Build Artefakte Abhängigkeiten beliebige Dateien Vordefinierte Deskriptoren Daten stehen im Container unter /maven zur Verfügung. 29

Beispiel Projekt Docker Demo Projekt Vanilla PostgreSQL 9 Image HTTP Request Logging Service MicroService mit embedded Tomcat DB Schema wird via Flyway während des Starts gebaut PostgreSQL Container wird über Link angebunden Einfacher Integrationstest der den Service nutzt REST-assured zum Testen des Service Aufrufes Aufruf: mvn clean install https://github.com/rhuss/docker-maven-sample 30

Demo

Zusammenfassung Docker ist eine leichtgewichtige Virtualisierungstechnik mit der man Robuste, autarke, isolierte und schnelle Integrationstests entwickeln kann. eine neues Paradigma für die Auslieferung von Applikationen umsetzen kann. Ein komfortabler Weg Docker in den Java Build Prozess zu integrieren ist mit einem docker-maven-plugin. 32

Referenzen index.docker.io - Public Docker Registry Entwickler Magazin Spezial Vol.2: Docker http://entwickler.de/docker_spezial "The Docker Book" sehr zu empfehlen! http://www.dockerbook.com/ 33

Danke! docker_nuke() { docker ps -q xargs docker stop docker ps -q -a xargs docker rm } docker_rmi_none() { docker images grep '<none>' \ awk '{ print $3 }' \ xargs docker rmi } docker_go() { docker run --rm -t -i $@ } 34

ConSol* Software GmbH Franziskanerstraße 38 D-81669 München Tel: +49-89-45841-100 Fax: +49-89-45841-111 info@consol.de www.consol.de 35