© OPITZ CONSULTING 2018
 Überraschend mehr Möglichkeiten
© OPITZ CONSULTING 2018
Mit APEX in die Amazon Cloud
Maik Michel, Senior Developer / Consultant
OPITZ CONSULTING Deutschland GmbH
Dockerize It
© OPITZ CONSULTING 2018 Seite 2
Agenda
1
2
3
4
5
Motivation & Ziel
Rund um Docker
NginX und Let‘s Encrypt
Die Amazon Cloud
Orchestrierung
Dockerize It – Mit APEX in die Amazon Cloud
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 3
© OPITZ CONSULTING 2018 Seite 4
Motivation
 Warum ist APEX so unbekannt?
 Warum sind Angular, React und Co so beliebt?
 Warum können wir nur Enterprise?
 Warum hat der Friseur um die Ecke keine
APEX – Applikation?
 Wieso verwaltet mein Sportverein seine
Mitglieder nicht über eine APEX-Applikation?
1
Dockerize It – Mit APEX in die Amazon Cloud
© OPITZ CONSULTING 2018 Seite 5
Was ist das Ziel
https://meine-app.auf-meiner-domain.de
 Erreichbar über HTTPS
 Über meine Domain
 Zu moderaten Kosten
 Performant und Skalierbar
 Und das bitte per Knopfdruck
1
Dockerize It – Mit APEX in die Amazon Cloud
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 6
Das Setup
Datenbank
•Oracle XE 11.2 mit
APEX 18.2
Applikationserver
•Tomcat mit ORDS und
JasperReportsIntegration
API-Proxy
•Node mit express und
http-proxy-middleware
Reverse Proxy
•NginX
•docker-gen
Let‘s Encrypt
•letsencrypt-nginx-proxy-
companion
APPSRV-Volume
• Jasper-Dateien
• Applikationsdeployments
DB-Volume
• Datenbankdateien
• APEX Installationsdateien
Host-Volumes
• Zertifikate
APEX-Deployment
• Einspielen verschie-
dener Applikationen
1521 8080
80
443
3000
2376
© OPITZ CONSULTING 2018 Seite 7
Rund um Docker
2
Dockerize It – Mit APEX in die Amazon Cloud
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 8
Rund um Docker
Was ist Docker
Im Unterschied zu virtuellen Maschinen wird bei Containern nicht die Hardware emuliert,
sondern das Betriebssystem. Die Virtualisierung erfolgt somit auf höherer Ebene, ohne
einen Hypervisor
Quelle: https://www.claranet.de/managed-hosting-service/docker-container
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 9
Rund um Docker
Wie funktioniert Docker
https://docs.docker.com/v17.09/engine/docker-overview/#docker-architecture
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 10
Rund um Docker
DB Image - Dockerfile
„Erben“ eines Base Images
Definieren von Umgebungsvariablen
Kopieren von Dateien vom Host
Installieren von Packages
Ausführen Programmen oder Scripts
Definition von Volumes, Ports …
Definition des Starts
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 11
Rund um Docker
DB Image - Dockerfile
„Erben“ eines Base Images
Definieren von Umgebungsvariablen
Kopieren von Dateien vom Host
Installieren von Packages
Ausführen Programmen oder Scripts
Definition von Volumes, Ports …
Definition des Starts
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 12
Rund um Docker
DB Image - Dockerfile
„Erben“ eines Base Images
Definieren von Umgebungsvariablen
Kopieren von Dateien vom Host
Installieren von Packages
Ausführen Programmen oder Scripts
Definition von Volumes, Ports …
Definition des Starts
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 13
Rund um Docker
DB Image - Dockerfile
„Erben“ eines Base Images
Definieren von Umgebungsvariablen
Kopieren von Dateien vom Host
Installieren von Packages
Ausführen Programmen oder Scripts
Definition von Volumes, Ports …
Definition des Starts
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 14
Rund um Docker
DB Image - Dockerfile
„Erben“ eines Base Images
Definieren von Umgebungsvariablen
Kopieren von Dateien vom Host
Installieren von Packages
Ausführen Programmen oder Scripts
Definition von Volumes, Ports …
Definition des Starts
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 15
Rund um Docker
DB Image - Dockerfile
„Erben“ eines Base Images
Definieren von Umgebungsvariablen
Kopieren von Dateien vom Host
Installieren von Packages
Ausführen Programmen oder Scripts
Definition von Volumes, Ports …
Definition des Starts
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 16
Rund um Docker
Container from DB Image
docker rundocker build
ContainerAuf BaseImage
aufsetzen
Umgebungsvariablen
defineren
Konfigurationsdateien
kopieren
Oracle Binaries
runterladen
Ports freigeben
Einstiegsskript
definieren
Einstiegsskript starten
DB
installiert
?
DB installieren
DB konfigurieren
DB starten
Ja
Nein
APEX 4 deinstallieren
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 17
Rund um Docker
Container from APP-Server Image
docker rundocker build
ContainerAuf BaseImage
aufsetzen
Umgebungsvariablen
definieren
Konfigurationsdateien
kopieren
APEX 18.2, Tomcat 8, ORDS,
JasperReportsIntegration, Java
runterladen
Ports freigeben
Einstiegsskript
definieren
Einstiegsskript starten
DB
erreichbar
?
ORDS
installiert
?
Tomcat starten
APEX installieren
ORDS installieren
JRI installieren
ggf. DDNS anpingen
Ja
Ja
Nein Nein
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 18
Rund um Docker
Container from NodeProxy
docker rundocker build
ContainerAuf BaseImage
aufsetzen
Arbeitsverzeichnis
festlegen
NPM installieren
APIProxy kopieren
Ports freigeben
Einstiegsskript
definieren
Starte node.js
API-Proxy
•Node mit express und
http-proxy-middleware
3000
Starte APIproxy
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 19
Rund um Docker
Lokale Entwicklungsumgebung
Einzelschritte
 docker volume create dbstore
 docker volume create appstore
 docker network create backnet
 docker build –t /oradb oradbimg
 docker run -d --network backnet --name oradb_cnt -p 1521:1521 -v dbstore:/u01/app/oracle -e
DB_PWD=xyz dbimage
 docker build –t /appsrv appsrvimg
 docker run -d --network backnet --name appsrv_cnt -p 8080:8080 -v appstore:/u01/apps -v
repstore:/u01/jasper/reports -e DB_PWD=xyz -e REP_PWD=xyz -e ORDS_PWD=xyz appsrvimg
 docker build –t /nodeprx nodeprximg
 docker run –d –network backnet –name nodeprx_cnt –p 3000:3000 nodeprximg
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 20
Rund um Docker
Lokale Entwicklungsumgebung
Besser geht es mit docker-compose
version: '2.2'
services:
oradb:
build:
context: ./oradb
container_name: oradb_cnt
mem_limit: 2g
ports:
- 1521:1521
volumes:
- dbstore:/u01/app/oracle
restart: always
appsrv:
build:
context: ./appsrv
environment:
- DB_HOST=oradb_cnt
container_name: appsrv_cnt
ports:
- 8080:8080
volumes:
- dbstore:/u01/app/oracle
- repstore:/u01/jasper/reports
- appstore:/u01/apps
restart: always
depends_on:
- oradb
nodeprx:
build:
context: ./nodeprx
container_name: nodeprx_cnt
ports:
- 3000:3000
restart: always
depends_on:
- oradb
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 21
Rund um Docker
Lokale Entwicklungsumgebung
 docker-compose
 Tool zum Definieren und Ausführen
von mehr als einem Container
 einfache Definition von Services in 1..n YAML-Dateien
docker-compose.yml
• dbservice
• env
• port
• volume
• appservice
• env
• port
• volume
• nodeprx
• …
local-development.yml
• dbservice
• env
• DB_PWD=secret
• FILES_XYZ=…
• appservice
• env
• DB_PWD=secret
• REP_PWD=secret
• ORDS_PWD=secret
• FILES_XYZ=…
 docker-compose –f docker-compose.yml –f local-development.yml build
 docker-compose –f docker-compose.yml –f local-development.yml up -d
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 22
Das Setup
Datenbank
•Oracle XE 11.2 mit
APEX 18.2
Applikationserver
•Tomcat mit ORDS und
JasperReportsIntegration
API-Proxy
•Node mit express und
http-proxy-middleware
APPSRV-Volume
• Jasper-Dateien
• Applikationsdeployments
DB-Volume
• Datenbankdateien
• APEX Installationsdateien
1521 8080 3000
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 23
Das Setup
Datenbank
•Oracle XE 11.2 mit
APEX 18.2
Applikationserver
•Tomcat mit ORDS und
JasperReportsIntegration
API-Proxy
•Node mit express und
http-proxy-middleware
Reverse Proxy
•NginX
•docker-gen
Let‘s Encrypt
•letsencrypt-nginx-proxy-
companion
APPSRV-Volume
• Jasper-Dateien
• Applikationsdeployments
DB-Volume
• Datenbankdateien
• APEX Installationsdateien
Host-Volumes
• Zertifikate
APEX-Deployment
• Einspielen verschie-
dener Applikationen
1521 8080
80
443
3000
2376
© OPITZ CONSULTING 2018 Seite 24
NginX und Let‘s Encrypt
3
Dockerize It – Mit APEX in die Amazon Cloud
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 25
NginX Reverse Proxy
User Reverse Proxy DatabaseApplication Server
80
443
8080
8081
8082
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 26
NginX Reverse Proxy mit Let‘s Encrypt
 docker-gen
 Überwachung Containerstarts
 Auslösen der Generierung der
NginX-Konfiguration
 Auslösen, der Zertifikatsgeneriung
über Let‘s Encrypt
 nginx-letsencrypt
 Validierung der Domain über
/.well-known/acme-challenge/
 Installation des Zertifikats
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 27
Routing mit NginX Reverse Proxy
http://my-apex-app.domain.de
https://my-apex-app.domain.de
NginX
APPSERVICE environment
VIRTUAL_HOST
my-apex-app.domain.de
VIRTUAL_NETWORK
nginx-proxy
VIRTUAL_PORT
8080
Applicationserver
Container
default.conf
…
upstream my-apex-app.domain.de {
server 172.18.0.3:8080;
}
server {
server_name my-apex-app.domain.de;
listen 80 ;
return 301 https://$host$request_uri;
}
server {
server_name my-apex-app.domain.de;
listen 443 ssl http2;
location / {
proxy_pass http://my-apex-app.domain.de
}
}
…
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 28
Rewriting mit NginX Reverse Proxy
http://my-apex-app.domain.de
https://my-apex-app.domain.de NginX
Deployment Definition
# target application number to install to
APP_NUM=100
# server proxied by nginx
# this is used to rewrite calls for location /
to that app
APP_SERVER=my-apex-app.domain.de
Deployment
Container
default.conf
…
server {
server_name my-apex-app.domain.de;
listen 443 ssl http2;
…
location = / {
rewrite ^ /ords/f?p=100;
}
}
…
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 29
Orchestrierung
docker-compose.yml
•dbservice
•build
•env
•port
•volume
•appservice
•build
•env
•port
•volume
•nodeprx
•build
•port
docker-compose-
remote.yml
•nginx-proxy
•ports: 80 + 443
•volumes
•letsencrypt-nginx-proxy
•volumes
remote-development.yml
•dbservice
•env
•DB_PWD=realysecret
•FILES_XYZ=…
•appservice
•env
•DB_PWD=realysecret
•REP_PWD=realysecret
•ORDS_PWD=realysecret
•FILES_XYZ=…
appsrv:
build:
args:
- DOWNLOAD_URL=https://s3.eu-central-1.amazonaws.com/xyz
- FILE_APEX=apex_18.2.zip
- TOM_PASSWORD=reallySecret
environment:
- DB_PASSWORD=reallySecret
- ORDS_PASSWORD=reallySecret
- REP_USER=jasper
- REP_PASSWORD=reallySecret
- REP_ENABLE_INFOPAGE=false
- APEX_USER=APEX_180200
- VIRTUAL_HOST=my-apex-app.domain.de
- LETSENCRYPT_HOST=my-apex-app.domain.de
- LETSENCRYPT_EMAIL=user.mail@domain.de
- DDNS_USER=myddnsuser
- DDNS_PASSWORD=reallySecret
- DDNS_URL=dyndns.kasserver.com
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 30
Das Setup
Datenbank
•Oracle XE 11.2 mit
APEX 18.2
Applikationserver
•Tomcat mit ORDS und
JasperReportsIntegration
API-Proxy
•Node mit express und
http-proxy-middleware
Reverse Proxy
•NginX
•docker-gen
Let‘s Encrypt
•letsencrypt-nginx-proxy-
companion
APPSRV-Volume
• Jasper-Dateien
• Applikationsdeployments
DB-Volume
• Datenbankdateien
• APEX Installationsdateien
Host-Volumes
• Zertifikate
APEX-Deployment
• Einspielen verschie-
dener Applikationen
1521 8080
80
443
3000
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 31
Das Setup
Datenbank
•Oracle XE 11.2 mit
APEX 18.2
Applikationserver
•Tomcat mit ORDS und
JasperReportsIntegration
API-Proxy
•Node mit express und
http-proxy-middleware
Reverse Proxy
•NginX
•docker-gen
Let‘s Encrypt
•letsencrypt-nginx-proxy-
companion
APPSRV-Volume
• Jasper-Dateien
• Applikationsdeployments
DB-Volume
• Datenbankdateien
• APEX Installationsdateien
Host-Volumes
• Zertifikate
APEX-Deployment
• Einspielen verschie-
dener Applikationen
1521 8080
80
443
3000
2376
© OPITZ CONSULTING 2018 Seite 32
Die Amazon Cloud
4
Dockerize It – Mit APEX in die Amazon Cloud
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 33
Die 3 Haupttypen des Cloud Computing
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 34
Amazon Web Services
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 35
Amazon Web Services
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 36
Elastic Cloud Computing - EC2
 stellt sichere, skalierbare Rechen-
kapazitäten in der Cloud bereit
 mühelos Kapazität erhalten und
konfigurieren
 Vorkonfigurierte Vorlagen für VMs/Instances
(Amazon Machine Images / AMIs)
 Instance-Typen zur Konfigurationen für
CPU, Arbeitsspeicher, Speicher und
Netzwerkkapazität der Instances t2.small
instance family
instance generation
instance size
https://microage.com/blog/aws-ec2-pricing-models/attachment/aws-ec2-instance-types/
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 37
Virtual Private Cloud - VPC
https://aws.amazon.com/de/blogs/apn/amazon-vpc-for-on-premises-network-engineers-part-one/
 selbst definiertes virtuelles
Netzwerk
 Netzwerkschicht von
verschiedenen Amazon AWS-
Ressourcen
 Konfiguration
 Ändern des IP-Adressbereichs,
 Erstellen von Subnetze und Routing-
Tabellen, Netzwerk-Gateways
 Anpassen verschiedener
Sicherheitseinstellungen
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 38
Das Setup
Datenbank
•Oracle XE 11.2 mit
APEX 18.2
Applikationserver
•Tomcat mit ORDS und
JasperReportsIntegration
API-Proxy
•Node mit express und
http-proxy-middleware
Reverse Proxy
•NginX
•docker-gen
Let‘s Encrypt
•letsencrypt-nginx-proxy-
companion
APPSRV-Volume
• Jasper-Dateien
• Applikationsdeployments
DB-Volume
• Datenbankdateien
• APEX Installationsdateien
Host-Volumes
• Zertifikate
APEX-Deployment
• Einspielen verschie-
dener Applikationen
1521 8080
80
443
3000
2376
© OPITZ CONSULTING 2018 Seite 39
Orchestrierung
5
Dockerize It – Mit APEX in die Amazon Cloud
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 40
Vorbereitung
 IAM - Benutzer erstellen (Identity and Access Management)
 Gruppe erstellen und zuweisen der Policy AmazonEC2FullAccess
 Benutzer der Gruppe hinzufügen
 AccessKey / Secret speichern
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 41
AWS-CLI
 Verwaltung und Konfiguration vieler AWS-Services über die
Kommandozeile
 Installation über: https://aws.amazon.com/de/cli/
 Konfiguration durch: aws configure
 AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
 AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
 Default region name [None]: eu-central-1
 Default output format [None]: json
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 42
docker-machine
https://docs.docker.com/machine/overview/#whats-the-difference-between-docker-engine-and-docker-machine
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 43
docker-machine
# Maschine anlegen
docker-machine -D create 
--driver amazonec2 
--amazonec2-access-key AKIAIOSFODNN7EXAMPLE 
--amazonec2-secret-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY 
--amazonec2-vpc-id vpc-1234567 
--amazonec2-region eu-central-1 
--amazonec2-instance-type t2.small 
doag-2018
 Security Group für EC2 Instanz erstellen / anpassen
 GroupName docker-machine
 Inbound HTTP TCP 80 0.0.0.0/0
SSH TCP 22 0.0.0.0/0
Custom TCP Rule TCP 2376 0.0.0.0/0
Custom TCP Rule TCP 443 0.0.0.0/0
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 44
Das Script
 Mit docker-machine und aws-cli die EC2-Instanz erstellen
 Benötigte Dateien vom Client zum Host kopieren
 Mit docker-compose *** build die Images erstellen
 Mit docker-compose *** up –d die Container starten
 … das ganze Ziehen lassen … und mit docker-compose *** logs –f
betrachten
 Fertig
© OPITZ CONSULTING 2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 45
DOCKAWEX
 Klonen des Repositories: https://github.com/MaikMichel/dockawex
 Download und platzieren der benutzen Softwarekomponenten
 Kopieren und Anpassen einer Template-Machine (Verzeichnis)
 Anpassen der AWS-Konfiguration
 Ausführen des Setup-Scripts …
 [Deployen einer APEX-Applikation]
© OPITZ CONSULTING 2018 Seite 46
Offene Punkte / Fragen
 Sicherheit der Passwörter die im Klartext
enthalten sind
 Mapping mehrerer Subdomains zu
verschiedenen Applikationen
Dockerize It – Mit APEX in die Amazon Cloud
© OPITZ CONSULTING 2018
 Überraschend mehr Möglichkeiten
@OC_WIRE
OPITZCONSULTING
opitzconsulting
opitz-consulting-bcb8-1009116
WWW.OPITZ-CONSULTING.COM
Seite 47
Wer “A” sagt, muss auch “PEX” sagen!
Maik Michel
Senior Developer / Consultant – Standort Essen
Lazarettstraße 15 – 45127 Essen
+49 201 892994 1720
+49 173 7279405
maik.michel@opitz-consulting.com
micodify.de
github.com/MaikMichel
Dockerize It – Mit APEX in die Amazon Cloud

Dockerize It - Mit apex in die amazon cloud

  • 1.
    © OPITZ CONSULTING2018  Überraschend mehr Möglichkeiten © OPITZ CONSULTING 2018 Mit APEX in die Amazon Cloud Maik Michel, Senior Developer / Consultant OPITZ CONSULTING Deutschland GmbH Dockerize It
  • 2.
    © OPITZ CONSULTING2018 Seite 2 Agenda 1 2 3 4 5 Motivation & Ziel Rund um Docker NginX und Let‘s Encrypt Die Amazon Cloud Orchestrierung Dockerize It – Mit APEX in die Amazon Cloud
  • 3.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 3
  • 4.
    © OPITZ CONSULTING2018 Seite 4 Motivation  Warum ist APEX so unbekannt?  Warum sind Angular, React und Co so beliebt?  Warum können wir nur Enterprise?  Warum hat der Friseur um die Ecke keine APEX – Applikation?  Wieso verwaltet mein Sportverein seine Mitglieder nicht über eine APEX-Applikation? 1 Dockerize It – Mit APEX in die Amazon Cloud
  • 5.
    © OPITZ CONSULTING2018 Seite 5 Was ist das Ziel https://meine-app.auf-meiner-domain.de  Erreichbar über HTTPS  Über meine Domain  Zu moderaten Kosten  Performant und Skalierbar  Und das bitte per Knopfdruck 1 Dockerize It – Mit APEX in die Amazon Cloud
  • 6.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 6 Das Setup Datenbank •Oracle XE 11.2 mit APEX 18.2 Applikationserver •Tomcat mit ORDS und JasperReportsIntegration API-Proxy •Node mit express und http-proxy-middleware Reverse Proxy •NginX •docker-gen Let‘s Encrypt •letsencrypt-nginx-proxy- companion APPSRV-Volume • Jasper-Dateien • Applikationsdeployments DB-Volume • Datenbankdateien • APEX Installationsdateien Host-Volumes • Zertifikate APEX-Deployment • Einspielen verschie- dener Applikationen 1521 8080 80 443 3000 2376
  • 7.
    © OPITZ CONSULTING2018 Seite 7 Rund um Docker 2 Dockerize It – Mit APEX in die Amazon Cloud
  • 8.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 8 Rund um Docker Was ist Docker Im Unterschied zu virtuellen Maschinen wird bei Containern nicht die Hardware emuliert, sondern das Betriebssystem. Die Virtualisierung erfolgt somit auf höherer Ebene, ohne einen Hypervisor Quelle: https://www.claranet.de/managed-hosting-service/docker-container
  • 9.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 9 Rund um Docker Wie funktioniert Docker https://docs.docker.com/v17.09/engine/docker-overview/#docker-architecture
  • 10.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 10 Rund um Docker DB Image - Dockerfile „Erben“ eines Base Images Definieren von Umgebungsvariablen Kopieren von Dateien vom Host Installieren von Packages Ausführen Programmen oder Scripts Definition von Volumes, Ports … Definition des Starts
  • 11.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 11 Rund um Docker DB Image - Dockerfile „Erben“ eines Base Images Definieren von Umgebungsvariablen Kopieren von Dateien vom Host Installieren von Packages Ausführen Programmen oder Scripts Definition von Volumes, Ports … Definition des Starts
  • 12.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 12 Rund um Docker DB Image - Dockerfile „Erben“ eines Base Images Definieren von Umgebungsvariablen Kopieren von Dateien vom Host Installieren von Packages Ausführen Programmen oder Scripts Definition von Volumes, Ports … Definition des Starts
  • 13.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 13 Rund um Docker DB Image - Dockerfile „Erben“ eines Base Images Definieren von Umgebungsvariablen Kopieren von Dateien vom Host Installieren von Packages Ausführen Programmen oder Scripts Definition von Volumes, Ports … Definition des Starts
  • 14.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 14 Rund um Docker DB Image - Dockerfile „Erben“ eines Base Images Definieren von Umgebungsvariablen Kopieren von Dateien vom Host Installieren von Packages Ausführen Programmen oder Scripts Definition von Volumes, Ports … Definition des Starts
  • 15.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 15 Rund um Docker DB Image - Dockerfile „Erben“ eines Base Images Definieren von Umgebungsvariablen Kopieren von Dateien vom Host Installieren von Packages Ausführen Programmen oder Scripts Definition von Volumes, Ports … Definition des Starts
  • 16.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 16 Rund um Docker Container from DB Image docker rundocker build ContainerAuf BaseImage aufsetzen Umgebungsvariablen defineren Konfigurationsdateien kopieren Oracle Binaries runterladen Ports freigeben Einstiegsskript definieren Einstiegsskript starten DB installiert ? DB installieren DB konfigurieren DB starten Ja Nein APEX 4 deinstallieren
  • 17.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 17 Rund um Docker Container from APP-Server Image docker rundocker build ContainerAuf BaseImage aufsetzen Umgebungsvariablen definieren Konfigurationsdateien kopieren APEX 18.2, Tomcat 8, ORDS, JasperReportsIntegration, Java runterladen Ports freigeben Einstiegsskript definieren Einstiegsskript starten DB erreichbar ? ORDS installiert ? Tomcat starten APEX installieren ORDS installieren JRI installieren ggf. DDNS anpingen Ja Ja Nein Nein
  • 18.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 18 Rund um Docker Container from NodeProxy docker rundocker build ContainerAuf BaseImage aufsetzen Arbeitsverzeichnis festlegen NPM installieren APIProxy kopieren Ports freigeben Einstiegsskript definieren Starte node.js API-Proxy •Node mit express und http-proxy-middleware 3000 Starte APIproxy
  • 19.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 19 Rund um Docker Lokale Entwicklungsumgebung Einzelschritte  docker volume create dbstore  docker volume create appstore  docker network create backnet  docker build –t /oradb oradbimg  docker run -d --network backnet --name oradb_cnt -p 1521:1521 -v dbstore:/u01/app/oracle -e DB_PWD=xyz dbimage  docker build –t /appsrv appsrvimg  docker run -d --network backnet --name appsrv_cnt -p 8080:8080 -v appstore:/u01/apps -v repstore:/u01/jasper/reports -e DB_PWD=xyz -e REP_PWD=xyz -e ORDS_PWD=xyz appsrvimg  docker build –t /nodeprx nodeprximg  docker run –d –network backnet –name nodeprx_cnt –p 3000:3000 nodeprximg
  • 20.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 20 Rund um Docker Lokale Entwicklungsumgebung Besser geht es mit docker-compose version: '2.2' services: oradb: build: context: ./oradb container_name: oradb_cnt mem_limit: 2g ports: - 1521:1521 volumes: - dbstore:/u01/app/oracle restart: always appsrv: build: context: ./appsrv environment: - DB_HOST=oradb_cnt container_name: appsrv_cnt ports: - 8080:8080 volumes: - dbstore:/u01/app/oracle - repstore:/u01/jasper/reports - appstore:/u01/apps restart: always depends_on: - oradb nodeprx: build: context: ./nodeprx container_name: nodeprx_cnt ports: - 3000:3000 restart: always depends_on: - oradb
  • 21.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 21 Rund um Docker Lokale Entwicklungsumgebung  docker-compose  Tool zum Definieren und Ausführen von mehr als einem Container  einfache Definition von Services in 1..n YAML-Dateien docker-compose.yml • dbservice • env • port • volume • appservice • env • port • volume • nodeprx • … local-development.yml • dbservice • env • DB_PWD=secret • FILES_XYZ=… • appservice • env • DB_PWD=secret • REP_PWD=secret • ORDS_PWD=secret • FILES_XYZ=…  docker-compose –f docker-compose.yml –f local-development.yml build  docker-compose –f docker-compose.yml –f local-development.yml up -d
  • 22.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 22 Das Setup Datenbank •Oracle XE 11.2 mit APEX 18.2 Applikationserver •Tomcat mit ORDS und JasperReportsIntegration API-Proxy •Node mit express und http-proxy-middleware APPSRV-Volume • Jasper-Dateien • Applikationsdeployments DB-Volume • Datenbankdateien • APEX Installationsdateien 1521 8080 3000
  • 23.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 23 Das Setup Datenbank •Oracle XE 11.2 mit APEX 18.2 Applikationserver •Tomcat mit ORDS und JasperReportsIntegration API-Proxy •Node mit express und http-proxy-middleware Reverse Proxy •NginX •docker-gen Let‘s Encrypt •letsencrypt-nginx-proxy- companion APPSRV-Volume • Jasper-Dateien • Applikationsdeployments DB-Volume • Datenbankdateien • APEX Installationsdateien Host-Volumes • Zertifikate APEX-Deployment • Einspielen verschie- dener Applikationen 1521 8080 80 443 3000 2376
  • 24.
    © OPITZ CONSULTING2018 Seite 24 NginX und Let‘s Encrypt 3 Dockerize It – Mit APEX in die Amazon Cloud
  • 25.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 25 NginX Reverse Proxy User Reverse Proxy DatabaseApplication Server 80 443 8080 8081 8082
  • 26.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 26 NginX Reverse Proxy mit Let‘s Encrypt  docker-gen  Überwachung Containerstarts  Auslösen der Generierung der NginX-Konfiguration  Auslösen, der Zertifikatsgeneriung über Let‘s Encrypt  nginx-letsencrypt  Validierung der Domain über /.well-known/acme-challenge/  Installation des Zertifikats
  • 27.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 27 Routing mit NginX Reverse Proxy http://my-apex-app.domain.de https://my-apex-app.domain.de NginX APPSERVICE environment VIRTUAL_HOST my-apex-app.domain.de VIRTUAL_NETWORK nginx-proxy VIRTUAL_PORT 8080 Applicationserver Container default.conf … upstream my-apex-app.domain.de { server 172.18.0.3:8080; } server { server_name my-apex-app.domain.de; listen 80 ; return 301 https://$host$request_uri; } server { server_name my-apex-app.domain.de; listen 443 ssl http2; location / { proxy_pass http://my-apex-app.domain.de } } …
  • 28.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 28 Rewriting mit NginX Reverse Proxy http://my-apex-app.domain.de https://my-apex-app.domain.de NginX Deployment Definition # target application number to install to APP_NUM=100 # server proxied by nginx # this is used to rewrite calls for location / to that app APP_SERVER=my-apex-app.domain.de Deployment Container default.conf … server { server_name my-apex-app.domain.de; listen 443 ssl http2; … location = / { rewrite ^ /ords/f?p=100; } } …
  • 29.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 29 Orchestrierung docker-compose.yml •dbservice •build •env •port •volume •appservice •build •env •port •volume •nodeprx •build •port docker-compose- remote.yml •nginx-proxy •ports: 80 + 443 •volumes •letsencrypt-nginx-proxy •volumes remote-development.yml •dbservice •env •DB_PWD=realysecret •FILES_XYZ=… •appservice •env •DB_PWD=realysecret •REP_PWD=realysecret •ORDS_PWD=realysecret •FILES_XYZ=… appsrv: build: args: - DOWNLOAD_URL=https://s3.eu-central-1.amazonaws.com/xyz - FILE_APEX=apex_18.2.zip - TOM_PASSWORD=reallySecret environment: - DB_PASSWORD=reallySecret - ORDS_PASSWORD=reallySecret - REP_USER=jasper - REP_PASSWORD=reallySecret - REP_ENABLE_INFOPAGE=false - APEX_USER=APEX_180200 - VIRTUAL_HOST=my-apex-app.domain.de - LETSENCRYPT_HOST=my-apex-app.domain.de - LETSENCRYPT_EMAIL=user.mail@domain.de - DDNS_USER=myddnsuser - DDNS_PASSWORD=reallySecret - DDNS_URL=dyndns.kasserver.com
  • 30.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 30 Das Setup Datenbank •Oracle XE 11.2 mit APEX 18.2 Applikationserver •Tomcat mit ORDS und JasperReportsIntegration API-Proxy •Node mit express und http-proxy-middleware Reverse Proxy •NginX •docker-gen Let‘s Encrypt •letsencrypt-nginx-proxy- companion APPSRV-Volume • Jasper-Dateien • Applikationsdeployments DB-Volume • Datenbankdateien • APEX Installationsdateien Host-Volumes • Zertifikate APEX-Deployment • Einspielen verschie- dener Applikationen 1521 8080 80 443 3000
  • 31.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 31 Das Setup Datenbank •Oracle XE 11.2 mit APEX 18.2 Applikationserver •Tomcat mit ORDS und JasperReportsIntegration API-Proxy •Node mit express und http-proxy-middleware Reverse Proxy •NginX •docker-gen Let‘s Encrypt •letsencrypt-nginx-proxy- companion APPSRV-Volume • Jasper-Dateien • Applikationsdeployments DB-Volume • Datenbankdateien • APEX Installationsdateien Host-Volumes • Zertifikate APEX-Deployment • Einspielen verschie- dener Applikationen 1521 8080 80 443 3000 2376
  • 32.
    © OPITZ CONSULTING2018 Seite 32 Die Amazon Cloud 4 Dockerize It – Mit APEX in die Amazon Cloud
  • 33.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 33 Die 3 Haupttypen des Cloud Computing
  • 34.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 34 Amazon Web Services
  • 35.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 35 Amazon Web Services
  • 36.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 36 Elastic Cloud Computing - EC2  stellt sichere, skalierbare Rechen- kapazitäten in der Cloud bereit  mühelos Kapazität erhalten und konfigurieren  Vorkonfigurierte Vorlagen für VMs/Instances (Amazon Machine Images / AMIs)  Instance-Typen zur Konfigurationen für CPU, Arbeitsspeicher, Speicher und Netzwerkkapazität der Instances t2.small instance family instance generation instance size https://microage.com/blog/aws-ec2-pricing-models/attachment/aws-ec2-instance-types/
  • 37.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 37 Virtual Private Cloud - VPC https://aws.amazon.com/de/blogs/apn/amazon-vpc-for-on-premises-network-engineers-part-one/  selbst definiertes virtuelles Netzwerk  Netzwerkschicht von verschiedenen Amazon AWS- Ressourcen  Konfiguration  Ändern des IP-Adressbereichs,  Erstellen von Subnetze und Routing- Tabellen, Netzwerk-Gateways  Anpassen verschiedener Sicherheitseinstellungen
  • 38.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 38 Das Setup Datenbank •Oracle XE 11.2 mit APEX 18.2 Applikationserver •Tomcat mit ORDS und JasperReportsIntegration API-Proxy •Node mit express und http-proxy-middleware Reverse Proxy •NginX •docker-gen Let‘s Encrypt •letsencrypt-nginx-proxy- companion APPSRV-Volume • Jasper-Dateien • Applikationsdeployments DB-Volume • Datenbankdateien • APEX Installationsdateien Host-Volumes • Zertifikate APEX-Deployment • Einspielen verschie- dener Applikationen 1521 8080 80 443 3000 2376
  • 39.
    © OPITZ CONSULTING2018 Seite 39 Orchestrierung 5 Dockerize It – Mit APEX in die Amazon Cloud
  • 40.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 40 Vorbereitung  IAM - Benutzer erstellen (Identity and Access Management)  Gruppe erstellen und zuweisen der Policy AmazonEC2FullAccess  Benutzer der Gruppe hinzufügen  AccessKey / Secret speichern
  • 41.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 41 AWS-CLI  Verwaltung und Konfiguration vieler AWS-Services über die Kommandozeile  Installation über: https://aws.amazon.com/de/cli/  Konfiguration durch: aws configure  AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE  AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY  Default region name [None]: eu-central-1  Default output format [None]: json
  • 42.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 42 docker-machine https://docs.docker.com/machine/overview/#whats-the-difference-between-docker-engine-and-docker-machine
  • 43.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 43 docker-machine # Maschine anlegen docker-machine -D create --driver amazonec2 --amazonec2-access-key AKIAIOSFODNN7EXAMPLE --amazonec2-secret-key wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY --amazonec2-vpc-id vpc-1234567 --amazonec2-region eu-central-1 --amazonec2-instance-type t2.small doag-2018  Security Group für EC2 Instanz erstellen / anpassen  GroupName docker-machine  Inbound HTTP TCP 80 0.0.0.0/0 SSH TCP 22 0.0.0.0/0 Custom TCP Rule TCP 2376 0.0.0.0/0 Custom TCP Rule TCP 443 0.0.0.0/0
  • 44.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 44 Das Script  Mit docker-machine und aws-cli die EC2-Instanz erstellen  Benötigte Dateien vom Client zum Host kopieren  Mit docker-compose *** build die Images erstellen  Mit docker-compose *** up –d die Container starten  … das ganze Ziehen lassen … und mit docker-compose *** logs –f betrachten  Fertig
  • 45.
    © OPITZ CONSULTING2018 Dockerize It – Mit APEX in die Amazon Cloud Seite 45 DOCKAWEX  Klonen des Repositories: https://github.com/MaikMichel/dockawex  Download und platzieren der benutzen Softwarekomponenten  Kopieren und Anpassen einer Template-Machine (Verzeichnis)  Anpassen der AWS-Konfiguration  Ausführen des Setup-Scripts …  [Deployen einer APEX-Applikation]
  • 46.
    © OPITZ CONSULTING2018 Seite 46 Offene Punkte / Fragen  Sicherheit der Passwörter die im Klartext enthalten sind  Mapping mehrerer Subdomains zu verschiedenen Applikationen Dockerize It – Mit APEX in die Amazon Cloud
  • 47.
    © OPITZ CONSULTING2018  Überraschend mehr Möglichkeiten @OC_WIRE OPITZCONSULTING opitzconsulting opitz-consulting-bcb8-1009116 WWW.OPITZ-CONSULTING.COM Seite 47 Wer “A” sagt, muss auch “PEX” sagen! Maik Michel Senior Developer / Consultant – Standort Essen Lazarettstraße 15 – 45127 Essen +49 201 892994 1720 +49 173 7279405 maik.michel@opitz-consulting.com micodify.de github.com/MaikMichel Dockerize It – Mit APEX in die Amazon Cloud

Hinweis der Redaktion

  • #4 Bildersuche nach aktuellen Development Frameworks Was hat ein Großteil dieser beliebten Frameworks gemeinsam? - Opensource - Frei Verfügbar - Geringer Bereitstellungsaufwand
  • #5 Fragen über Fragen Meiner Meinung nach müssen wir auch den Nachwuchs von APEX begeistern. Und das schaffen wir nicht im Enterprise-Umfeld, sondern im Umfeld der Entwickler, sei es im Verein, in der Schule, an der Uni …
  • #6 Demo? - Chrome: http://apex-connect18.mocodify.de - Shell: cd zielverzeichnis ./cma.sh apex-connect18
  • #7 Erstmal wirken lassen Was sehen wir? Wir werden 5 Container starten, diese Container sind über bestimmte Ports erreichbar, speichern und teilen ihre Daten über verschiedene Volumes
  • #9 Mit Hilfe der Open-Source Software Docker lassen sich Anwendungen in Containern isolieren Docker ist ein Open-Source-Projekt zur automatisierten Bereitstellung von Applikationen, die in einem Container organisiert sind. Für meine Applikation immer die gleiche Umgebung (zum Verteilen) Docker nutzt spezielle Kernelfunktionalitäten, um einzelne Prozesse in Containern voneinander zu isolieren. Für Prozesse, die mit Containern gestartet werden, scheint es so, als würden sie auf einem eigenen System laufen. 
  • #10 Ein Container ist eine laufende Instanz eines Images Images werden durch ein Dockerfile definiert
  • #11 Ein Dockerfile ist eine Art Bauanleitung für ein Docker-Image. Es enthält die einzelnen Schritte, die notwendig sind, um aus einem beliebigen Basis-Image ein neues Docker Image zu erstellen Bei stapelbaren Dateisystemen werden einzelne Schichten aufeinander gelegt. Jede dieser Schichten wird dabei getrennt erstellt
  • #23 Erstmal wirken lassen Was sehen wir? Wir werden 5 Container starten, diese Container sind über bestimmte Ports erreichbar, speichern und teilen ihre Daten über verschiedene Volumes
  • #24 Erstmal wirken lassen Was sehen wir? Wir werden 5 Container starten, diese Container sind über bestimmte Ports erreichbar, speichern und teilen ihre Daten über verschiedene Volumes
  • #27 DOCKER LETSENCRYPT NGINX PROXY COMPANION
  • #28 NginX Docker Image aus dem Standard docker-hub
  • #29 NginX Docker Image aus dem Standard docker-hub
  • #31 Erstmal wirken lassen Was sehen wir? Wir werden 5 Container starten, diese Container sind über bestimmte Ports erreichbar, speichern und teilen ihre Daten über verschiedene Volumes
  • #32 Erstmal wirken lassen Was sehen wir? Wir werden 5 Container starten, diese Container sind über bestimmte Ports erreichbar, speichern und teilen ihre Daten über verschiedene Volumes
  • #34 bezieht sich auf die Bereitstellung von IT-Ressourcen und Anwendungen auf Abruf über das Internet zu nutzungsabhängigen Preisen
  • #37 t2.small CPU: 1 RAM 2,0 CPU-Guthaben pro Stunde: 12 Preis / Stunde: 0,0232 USD Preis / Monat: 16,04 USD
  • #39 Erstmal wirken lassen Was sehen wir? Wir werden 5 Container starten, diese Container sind über bestimmte Ports erreichbar, speichern und teilen ihre Daten über verschiedene Volumes
  • #43 Hier wäre es cool einfach mal eine Machine zu erstellen
  • #44 Hier wäre es cool einfach mal eine Machine zu erstellen
  • #45 Hier wäre es cool einfach mal eine Machine zu erstellen
  • #46 Hier wäre es cool einfach mal eine Machine zu erstellen