Dr. Roland Huß, ConSol* (@ro14nd) Docker für Java-Entwickler

Ähnliche Dokumente
Docker für Java Entwickler

Docker für Entwickler

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

The linux container engine. Peter Daum

Installations Guide für YAJSW und DTLDAP

Build-Pipeline mit Jenkins

ADDISON Aktenlösung Automatischer Rewe-Import. Technische Beschreibung

Continuous Delivery mit Docker

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis

Einführung in Subversion. Tutorium SWP

Mercurial. or how I learned to stop worrying and love the merge. Ted Naleid IAIK

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

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

Import und Export von Übergängern

Praktikum Ingenieurinformatik (PI)

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

Medea3 Print-Client (m3_print)

MARCANT - File Delivery System

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

ecaros2 - Accountmanager

Workshop: Eigenes Image ohne VMware-Programme erstellen

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

JIRA-Speicher erhoehen

GITS Steckbriefe Tutorial

Übung - Konfigurieren einer Windows 7-Firewall

Spring Dynamic Modules for OSGi Service Platforms

Prodanet ProductManager WinEdition

Deployment Deployment Seite 1 / 25

Versionsverwaltung GIT & SVN. Alexander aus der Fünten. Proseminar: Methoden und Werkzeuge, SS Lehrstuhl i9, Prof. Dr. T.

RIS Abbild mit aktuellen Updates

NEUE FUNKTIONEN IN IQ4DOCS 1.4.3

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

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

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

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

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

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

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

SRH - Kurzinformation

desk.modul : ABX-Lokalisierung

Lokale Installation von DotNetNuke 4 ohne IIS

Container als Immutable Infrastructure. John M. Hutchison

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

Systemvoraussetzungen:

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

FRILO-Aktuell Ausgabe 2/2013

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

Drucken aus der Anwendung

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

Die Projek*ools. Files, Git, Tickets & Time

CADEMIA: Einrichtung Ihres Computers unter Mac OS X

Einrichtung von Mozilla Thunderbird

Open Source. Hendrik Ebbers 2015

Benutzung der LS-Miniscanner

Weblogic Server: Administration für Umsteiger

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

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

Continuous Delivery. für Java Anwendungen. Axel Fontaine Software Development Expert

Planung für Organisation und Technik

Google Earth und Telefonbücher im Internet

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

Routing im Internet Wie findet ein IP Paket den Weg zum Zielrechner?

Installation DataExpert Paynet-Adapter (SIX)

Anbindung des eibport an das Internet

Reporting Services und SharePoint 2010 Teil 1

Print2CAD 2017, 8th Generation. Netzwerkversionen

Internet Explorer Version 6

Kurzpräsentation Fiat Export Programm

Containisierung von Java Apps mit Docker

Formular»Fragenkatalog BIM-Server«

> Soft.ZIV. Maple Mathematisches Software System

Der lokale und verteilte Fall

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

Software Engineering in der Praxis

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

Windows Server 2012 RC2 konfigurieren

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

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

Installationsanleitung für pcvisit Server (pcvisit 12.0)

Innovator 11 classix. Anbindung an Eclipse. Einführung, Installation und Konfiguration. Connect. Michael Kaaden.

MCRServlet Table of contents

Referenzen TYPO3 Projekt Slider für Reiseberichte Stand: Februar 2015

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

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

Xerox Device Agent, XDA-Lite. Kurzanleitung zur Installation

ObjectBridge Java Edition

Serienbriefe schreiben mit Ratio - Adressen (Microsoft Word Versionen 8.0 und 9.0)

NetMan Desktop Manager Vorbereitung und Konfiguration des Terminalservers

R-ADSL2+ Einrichthinweise unter Windows 98/ME

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

Inhalt. 1 FAQ zum Geoportal Kamenz

Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten

SolarWinds Engineer s Toolset

Anleitung zur Installation des EPSON TM-m30 WLAN Moduls

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

Von SVN zu Git. Daniel Willmann cbna

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

Der SAP BW-BPS Web Interface Builder

Transkript:

Dr. Roland Huß, ConSol* (@ro14nd) Docker für Java-Entwickler

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

Roland Huß ro14nd @ Java Entwickler @ ConSol* Open Source www.jolokia.org labs.consol.de https://github.com/rhuss Konferenzen JavaZone 2014 W-JAX 2014 Devoxx 2014 JavaLand 2015

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

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

Image & Repository Image: read-only Dateisystem Schicht Repository: Sammlung von Images Repository kann installiert und verteilt werden (z.b. über eine Registry) "Blaupause für einen Container"

Container read-write Schicht über den Images Copy-On-Write kann gestartet und gestoppt werden "Instanz eines Repositories"

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

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

Docker für Java Entwickler? Integrationstests Applikations Deployment

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

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

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

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

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

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.

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

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

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

docker-maven-plugin WTF or FTW?

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

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"

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

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>

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

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.

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

Demo

Wormhole Pattern Autarke Integrationstest mit Docker möglich Idee: Testaufruf selbst in einen Docker Container packen Wurmloch : docker-maven-plugin greift aus dem Container heraus auf den ihn verwaltenden Docker-Daemon zu

Dockerfile FROM java:7u75 ENV MAVEN_VERSION 3.3.1 ADD cloneandbuild /cloneandbuild RUN wget http://www.eu.apache.org/dist/maven/maven-3/${maven_version}/binaries/apachemaven-${maven_version}-bin.tar.gz -O maven.tgz RUN tar zxvf maven.tgz ADD apache-maven-${maven_version} maven CMD ["clean","install"] ENTRYPOINT [ "/cloneandbuild" ]

cloneandbuild #!/bin/bash # Extract Docker host IP from routing table host=$(ip route show 0.0.0.0/0 \ grep -Eo 'via \S+' \ awk '{print $2} ); export DOCKER_HOST=tcp://${host}:2375 # Checkout project afresh git clone https://github.com/rhuss/docker-maven-sample.git # Call Maven from image with all arguments /maven/bin/mvn $*

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

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/ Referenzen

Danke!

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