1
00:00:03,030 --> 00:00:06,030
Herzlich willkommen zu Folge 68 
von einfach komplex. 

2
00:00:06,070 --> 00:00:07,830
Hier ist Gerrit und Bockert ist 
auch da. 

3
00:00:07,830 --> 00:00:09,910
Hallo Burkhard. 
Und ihr lieben Hallo. 

4
00:00:10,190 --> 00:00:13,830
Unser Thema ist heute dokka und 
nicht einfach nur mal erklären. 

5
00:00:14,270 --> 00:00:15,710
Ja, was Docca ist. 
So ein bisschen haben wir das 

6
00:00:15,710 --> 00:00:18,150
schon mal gemacht in einer in 
einer älteren Folge vielleicht. 

7
00:00:18,150 --> 00:00:20,830
Bock hat gleich ein kleines Re 
Cup, aber Burkhard will uns 

8
00:00:20,830 --> 00:00:23,190
heute mal erklären, wie man 
locker tatsächlich einsetzen 

9
00:00:23,190 --> 00:00:25,310
kann. 
Ja es ist trotzdem nicht nur für

10
00:00:25,310 --> 00:00:26,950
Entwickler glaube ich es ist 
glaube ich für alle ganz 

11
00:00:26,950 --> 00:00:29,680
spannend mal zu. 
Wissen, was es so für 

12
00:00:29,680 --> 00:00:32,159
Herausforderungen da gibt, was 
es eigentlich bedeutet, wenn 

13
00:00:32,159 --> 00:00:35,160
jemand sagt, Ich nutze mal eben 
Docker so, aber ich glaube, es 

14
00:00:35,160 --> 00:00:37,080
ist sogar auch ein bisschen was 
für Leute dabei, die das dann 

15
00:00:37,080 --> 00:00:39,040
wirklich mal machen wollen. 
So habe ich verstanden, 

16
00:00:39,040 --> 00:00:42,160
Burkhard, ist das richtig. 
Ja genau richtig, Gerrit, weil 

17
00:00:42,800 --> 00:00:45,720
ja, also es gibt so viel Docker 
hier, dokada, Microservices und 

18
00:00:45,720 --> 00:00:48,040
so weiter es gibt viele Artikel 
und so und viel bleibt halt 

19
00:00:48,040 --> 00:00:50,400
irgendwie an der Oberfläche und 
ich hatte irgendwie das Gefühl, 

20
00:00:50,920 --> 00:00:53,920
dass wir versuchen, wirklich mal
ein Stück tiefer zu gehen dann. 

21
00:00:54,160 --> 00:00:57,520
Wird es auch gleich schon harter
Tobak, sage ich mal. 

22
00:00:57,520 --> 00:01:00,680
Und heute wird auch die Folge 
vielleicht ein bisschen härterer

23
00:01:00,680 --> 00:01:03,000
Tobak als so manch andere Folge.
Aber macht ja nichts. 

24
00:01:03,990 --> 00:01:06,710
Aber ich will halt mal versuchen
durchzukommen. 

25
00:01:06,710 --> 00:01:09,750
Ja, durch diese wichtigen, ja 
durch diese sehr wichtigen 

26
00:01:09,750 --> 00:01:12,510
Konzepte, und das hat mich auch,
ich will auch n bisschen aus der

27
00:01:12,510 --> 00:01:14,910
aus dem Nähkästchen plaudern, 
weil ich auch sehr lange 

28
00:01:14,910 --> 00:01:18,270
gebraucht hab, um um mir das 
Docker so zu biegen und so zu 

29
00:01:18,270 --> 00:01:20,270
verstehen. 
Bies gut einsetzen kann. 

30
00:01:20,270 --> 00:01:23,350
Ja, es ist weil Doccar ist halt 
n Fundament der modernen 

31
00:01:23,350 --> 00:01:27,070
Software Architektur, aber es 
ist gar nicht so glasklar wie 

32
00:01:27,070 --> 00:01:30,190
man es einsetzt, gibt also nicht
so richtig krasse Best 

33
00:01:30,190 --> 00:01:32,710
Practices. 
Weil aber auch die ganzen 

34
00:01:32,710 --> 00:01:34,870
Anwendungen sehr unterschiedlich
sind, man kann es sehr, sehr 

35
00:01:34,870 --> 00:01:38,430
unterschiedlich in verschiedene 
Arten einsetzen, ne und heute 

36
00:01:38,430 --> 00:01:41,150
gucken wir das mal so n bisschen
an, wie wir es benutzen, weil 

37
00:01:41,150 --> 00:01:42,750
wie gesagt, es ist so 
unterschiedlich, dass ich gar 

38
00:01:42,750 --> 00:01:45,150
nicht über alle, erstens nicht 
über alle Kombinatoriken des 

39
00:01:45,150 --> 00:01:47,750
Einsetzens sprechen kann. 
Und zweitens von da auch nicht 

40
00:01:47,750 --> 00:01:51,070
in der Tiefe, die Ahnung hab ja 
deswegen n kleiner Disclaimer, 

41
00:01:51,070 --> 00:01:53,310
bisschen Nähkästchen geplaudern 
so n bisschen so wie wir es 

42
00:01:53,310 --> 00:01:55,630
machen oder wie ich es quasi 
machen würde bei anderen 

43
00:01:55,630 --> 00:01:57,510
Projekten auch. 
Oh da versuchen wir mal 

44
00:01:57,510 --> 00:01:59,630
durchzukommen, ne? 
Ne gute Grundlage könnte 

45
00:01:59,630 --> 00:02:02,070
wahrscheinlich auch noch Folge 2
sein oder ne Anschlussfolge, die

46
00:02:02,070 --> 00:02:04,910
man sich noch mal anhört, ne? 
Genau in Folge 2 schon ein 

47
00:02:04,910 --> 00:02:06,510
bisschen her. 
Haben wir tatsächlich einmal 

48
00:02:06,510 --> 00:02:09,470
über Microservices im Großen und
Ganzen geredet, die würde ich 

49
00:02:09,470 --> 00:02:11,470
jetzt für alle, die jetzt 
irgendwie Docker das erste Mal 

50
00:02:11,470 --> 00:02:13,670
hören, würde ich sagen, auf 
jeden Fall mal kurz folge 2. 

51
00:02:14,680 --> 00:02:16,480
Vielleicht auch auf 1,5, Speed 
oder Irgendsowas hören. 

52
00:02:16,480 --> 00:02:19,760
Und dann diese Folge, die baut 
schon jetzt noch drauf auf. 

53
00:02:19,760 --> 00:02:22,200
Ja also ich mach ein kleines 
Recape gleich, aber wir wollen 

54
00:02:22,200 --> 00:02:24,360
ein bisschen tiefer gehen als 
wir in Folge 2 waren. 

55
00:02:24,360 --> 00:02:27,160
Ja, dann möchtest du damit 
starten mit diesem RE Cup und 

56
00:02:27,160 --> 00:02:30,760
nochmal kurz ausholen oder uns 
erläutern was so Microservices 

57
00:02:30,760 --> 00:02:32,840
eigentlich sind und wie Docker 
damit zusammenhängen. 

58
00:02:33,080 --> 00:02:36,560
Machen wir also einmal vorweg, 
gesagt, Docker, das ist halt die

59
00:02:36,560 --> 00:02:39,760
Containerierungstechnologie, das
haben wahrscheinlich schon viele

60
00:02:39,760 --> 00:02:43,160
gehört, wenn man Docker sagt, 
dann spricht man eigentlich nur 

61
00:02:43,160 --> 00:02:46,110
vom Viertel der Aufgabe. 
Vielleicht noch weniger. 

62
00:02:46,150 --> 00:02:49,070
Es ist zwar das das erste 
Fundament, was ich brauche, ich 

63
00:02:49,070 --> 00:02:50,950
muss erstmal Container 
erschaffen, was die gleich sind 

64
00:02:50,950 --> 00:02:53,630
sag ich noch, aber viel 
wichtiger ist das gleich vorweg 

65
00:02:53,630 --> 00:02:56,710
ist später das Nutzen der 
Container, ich hab es nie mit 

66
00:02:56,710 --> 00:03:00,750
einem Container zu tun ne das 
ist das wäre paradox ja das ist 

67
00:03:00,750 --> 00:03:03,070
drauf angelegt, dass ich mit 
vielen Containern gleichzeitig 

68
00:03:03,070 --> 00:03:05,390
arbeite, wenn ich eine größere 
Anwendung habe, vor allen Dingen

69
00:03:05,390 --> 00:03:07,470
Webanwendungen, dann habe ich 
halt das nicht in einem 

70
00:03:07,470 --> 00:03:09,910
Container, sondern 
typischerweise in vielen. 

71
00:03:10,720 --> 00:03:12,360
Und hier ist, wo der Hase im 
Pfeffer liegt, ist nämlich die 

72
00:03:12,360 --> 00:03:15,720
Orchestrierung dieser Container.
Weil. 

73
00:03:15,840 --> 00:03:18,120
Im Prinzip, Jeder Container 
Kapselt quasi eine Anwendung. 

74
00:03:18,120 --> 00:03:20,520
Wenn du möchtest. 
Einen logischen Aspekt einer 

75
00:03:20,520 --> 00:03:23,200
Gesamtanwendung. 
Die hat aus vielen kleinen 

76
00:03:23,320 --> 00:03:27,680
Anwendungen besteht 
Microservices. 

77
00:03:27,680 --> 00:03:30,920
Genau so ist der Fachbegriff 
richtig und dadurch entsteht 

78
00:03:30,920 --> 00:03:34,000
halt schon was sehr komplexes, 
weil das gleich ein wichtiger 

79
00:03:34,000 --> 00:03:37,480
Punkt am Anfang diese diese 
Anwendung, diese Microservices 

80
00:03:37,800 --> 00:03:40,360
die ergeben, wenn du mehrere 
hast sofort einen verteiltes 

81
00:03:40,360 --> 00:03:43,080
System wieder Informatiker sagt 
ja, ein verteiltes System ist 

82
00:03:43,080 --> 00:03:45,800
halt ein System was Komponenten 
in einem Netzwerk zur Verfügung 

83
00:03:45,800 --> 00:03:48,710
stellt. 
Wo ich ständig netzwerkaufrufe 

84
00:03:48,710 --> 00:03:53,110
brauche, um Logiken oder Teile 
von Logiken zu benutzen, in 

85
00:03:53,110 --> 00:03:56,190
meiner Gesamtanwendung ja, 
dadurch wird das sofort auf ne 

86
00:03:56,190 --> 00:03:59,270
ganz andere Komplexitätsebene 
gehoben, als wenn ich jetzt zum 

87
00:03:59,270 --> 00:04:00,950
Beispiel so altertümlich 
irgendwie so ne. 

88
00:04:01,950 --> 00:04:04,430
Ja, so n Monolithen 
monolithische Anwendung, hab ja 

89
00:04:04,670 --> 00:04:07,350
das hab ich in Folge 2 auch 
gesagt, dann hab ich quasi vom 

90
00:04:07,350 --> 00:04:10,310
Programmieren her n ganz anderen
Stil, dann hab ich quasi 

91
00:04:10,470 --> 00:04:13,510
Bibliotheken und Abhängigkeiten 
direkt um mich rum und ich 

92
00:04:13,510 --> 00:04:15,710
brauch keine remote Calls 
machen, ich brauch keine rest 

93
00:04:15,710 --> 00:04:18,709
Apis ansprechen, ich muss nicht 
über RPC Protokolle oder 

94
00:04:18,709 --> 00:04:20,990
Irgendsowas nachdenken weil es 
nicht Netzwerk ist. 

95
00:04:20,990 --> 00:04:23,270
Was dazwischen ist. 
Aber immer wenn wir Docker 

96
00:04:23,270 --> 00:04:25,550
sprechen, dann haben wir das 
Problem der Orchestrierung ja 

97
00:04:25,550 --> 00:04:28,120
das ist wichtig, ja also. 
Wie spiele ich mit der 

98
00:04:28,120 --> 00:04:31,840
Gesamtheit dieser Container 
später rum und alles was dieses 

99
00:04:32,000 --> 00:04:35,600
Docker dann auch ausmacht, diese
ganze Sachen mit Skalierung, pro

100
00:04:35,600 --> 00:04:38,680
Verfügbarkeit und so weiter das 
hat alles was damit zu tun, dass

101
00:04:38,680 --> 00:04:41,800
ich auch noch dynamisch quasi 
diese Container vermehre, 

102
00:04:41,800 --> 00:04:45,120
verkleinere und so weiter und 
dadurch wird das wird diese 

103
00:04:45,120 --> 00:04:48,120
Orchestrierungsaufgabe eines der
wichtigsten Aufgaben, sag ich 

104
00:04:48,120 --> 00:04:51,880
mal und jetzt vorweg, um uns um 
uns festzulegen, es gibt 

105
00:04:51,880 --> 00:04:55,280
Orchestratoren. 
Für diese Container, was die 

106
00:04:55,280 --> 00:04:57,520
sind, sage ich gleich noch mal 
schnell, aber ich sag mal kurz 

107
00:04:57,520 --> 00:05:00,840
die Orchestratoren vorneweg. 
Docker kommt mit dem sogenannten

108
00:05:00,840 --> 00:05:03,350
Docker Compose. 
Und das ist das, wo wir heute 

109
00:05:03,350 --> 00:05:06,230
drüber sprechen wollen. 
Das ist so das erste, was man 

110
00:05:06,230 --> 00:05:09,070
nehmen kann, weil es halt auch 
quasi irgendwie zu zu Docker, 

111
00:05:09,070 --> 00:05:11,870
zur Dockertechnologie gehört und
eingebaut ist. 

112
00:05:12,070 --> 00:05:14,750
Dann gibt es noch das Swarm und 
dann gibt es noch so Sachen wie 

113
00:05:14,750 --> 00:05:17,190
Portainer und und vor allen 
Dingen das Kybernetik, das hat 

114
00:05:17,190 --> 00:05:19,430
dann vielleicht schon viele 
Leute gehört, Kybernetik ist 

115
00:05:19,430 --> 00:05:22,950
quasi so die dickste Kanone der 
Orchestrierung, die man benutzen

116
00:05:22,950 --> 00:05:26,190
kann, aber das lassen wir heute 
alles mal weg und sprechen nur 

117
00:05:26,190 --> 00:05:28,560
über Compose als. 
Orchestrator. 

118
00:05:28,560 --> 00:05:31,400
Magst du noch kurz sagen, woher 
Docker eigentlich kommt? 

119
00:05:31,400 --> 00:05:34,560
Also war das einfach, da gibt es
auch wieder ein Open Source 

120
00:05:34,560 --> 00:05:36,440
Projekt oder steht da eine Firma
hinter? 

121
00:05:36,560 --> 00:05:39,280
Es gibt eine Community Edition 
von Docers, also Open Source 

122
00:05:39,280 --> 00:05:41,960
Benutzer muss nichts zahlen. 
Ich weiß jetzt nicht die 

123
00:05:41,960 --> 00:05:44,960
Historie gerade nicht, 
vielleicht weißt du es, ich weiß

124
00:05:44,960 --> 00:05:48,520
nur, dass es quasi eine 
Weiterentwicklung oder einen 

125
00:05:48,520 --> 00:05:51,880
Überbau von von etwas, was schon
immer da war, nämlich vom Linux 

126
00:05:51,880 --> 00:05:54,240
Kernel, der hat sogenannte 
Features, das sind die 

127
00:05:54,240 --> 00:05:57,160
Namespaces und die Control 
Groups für die Techies jetzt 

128
00:05:57,240 --> 00:05:59,830
und. 
Aus diesen Möglichkeiten des 

129
00:05:59,830 --> 00:06:02,710
Kernels hat man quasi diese 
Kontinuisierung gebaut. 

130
00:06:02,710 --> 00:06:04,990
Und was ist Kontinuierierung? 
Es ist Prinzip nichts anderes 

131
00:06:04,990 --> 00:06:08,990
als ne Gekapselte, sehr leicht 
gewichtige virtuelle Umgebung, 

132
00:06:08,990 --> 00:06:11,190
also man kann es sich vorstellen
wie ne wie n virtuelles 

133
00:06:11,190 --> 00:06:14,390
Betriebssystem, nur viel 
leichter als sowas wie Virtual 

134
00:06:14,390 --> 00:06:16,070
Box oder sowas. 
Du kennst das ne, also wenn du 

135
00:06:16,070 --> 00:06:19,230
so ein ganzes System nimmst, es 
startet unglaublich schnell und 

136
00:06:19,230 --> 00:06:22,670
du kannst es stoppen und durch 
diese kontinuierisierung kannst 

137
00:06:22,670 --> 00:06:26,510
du quasi kleine Linux Systeme im
Prinzip jeglicher Distribution. 

138
00:06:27,320 --> 00:06:32,520
In so einem Container. 
Quasi vorhalten und auch dir die

139
00:06:32,520 --> 00:06:34,560
so hin installieren oder 
erweitern. 

140
00:06:34,560 --> 00:06:37,000
Also das Betriebssystem quasi 
was wieso ein kleines Mini 

141
00:06:37,000 --> 00:06:41,000
Betriebssystem Linux pro 
Container und das ist völlig 

142
00:06:41,000 --> 00:06:44,840
unabhängig von deinem 
Wirtssystem und von den anderen 

143
00:06:44,840 --> 00:06:46,520
Containern. 
Ja es läuft also es ist wie eine

144
00:06:46,520 --> 00:06:50,760
kleine virtuelle Umgebung, kann 
aber so klein sein wie nur 3040 

145
00:06:50,760 --> 00:06:54,040
Megabyte wenn es ausführt, also 
ist nicht irgendwie so hier wenn

146
00:06:54,040 --> 00:06:56,520
du Windows 11 hast. 
Ich weiß nicht, was das im 

147
00:06:56,520 --> 00:06:58,520
Moment braucht an der Platte. 
Also da hast du 2 Gigabyte. 

148
00:06:59,070 --> 00:07:01,430
Schon im Arbeitsspeicher stehen 
und Festplatte wollen wir gar 

149
00:07:01,430 --> 00:07:04,270
nicht von reden, aber das ist 
halt halt vielleicht wichtiger. 

150
00:07:04,270 --> 00:07:06,630
Ja und dadurch bekommst du 
Sicherheit und Unabhängigkeit 

151
00:07:06,630 --> 00:07:08,870
diese Komponenten rein ne. 
Pass auf, dann sag ich dir das 

152
00:07:08,870 --> 00:07:11,510
noch kurz, wo es herkommt und 
zwar oder wann. 

153
00:07:11,790 --> 00:07:15,550
Wann ist den ersten Commit im 
entsprechenden Repository gab, 

154
00:07:15,550 --> 00:07:19,790
das war 2013 von der Dot Cloud 
Ink, also eine amerikanische 

155
00:07:19,790 --> 00:07:23,350
Firma, die sich dann im gleichen
Jahr noch auch in die Docker Ink

156
00:07:23,350 --> 00:07:25,110
umgetauft hat. 
Ja und? 

157
00:07:25,280 --> 00:07:28,040
Wie du schon sagst, es gibt dann
diese Community Edition und du 

158
00:07:28,040 --> 00:07:31,160
kannst natürlich aber auch die 
Docker Ink bezahlen für 

159
00:07:31,160 --> 00:07:32,680
entsprechende Services 
rundherum. 

160
00:07:33,040 --> 00:07:35,360
Genau wie es oft so ist, macht 
ja auch Sinn. 

161
00:07:35,480 --> 00:07:38,320
Und dann war es zuerst zum 
Einsatz bei Redhead Red hat 

162
00:07:38,320 --> 00:07:41,880
Linux, was ja quasi in ein 
bezahltes professionelles Linux 

163
00:07:41,880 --> 00:07:45,240
ist, wenn man so will und 
Enterprise Linux und dann weiter

164
00:07:45,240 --> 00:07:47,280
brauche ich jetzt nicht gehen. 
Ich zitiere jetzt auch noch 

165
00:07:47,280 --> 00:07:49,360
Wikipedia, aber dann haben wir 
das noch mal kurz geklärt. 

166
00:07:49,360 --> 00:07:51,720
Ja, danke, Gerhard, Das ist 
nochmal auf dem Zettel hattest. 

167
00:07:51,720 --> 00:07:55,040
Ich habe mich heute für die für 
die technische Roni Methoden 

168
00:07:55,040 --> 00:07:57,630
entschieden. 
Das vorzubereiten, das war jetzt

169
00:07:57,630 --> 00:07:58,470
auch mein Beitrag. 
Quasi. 

170
00:08:00,560 --> 00:08:03,160
Alles klar, pass auf, dann 
erzähl ich noch mal kurz die 

171
00:08:03,160 --> 00:08:06,200
wichtigsten, die wichtigsten 
Features, quasi um Docker jetzt 

172
00:08:06,200 --> 00:08:08,800
selber mal rum, da gibt es das 
sogenannte Konzept eines Images 

173
00:08:08,800 --> 00:08:10,960
und eines Containers, ich 
wiederhole ich noch mal. 

174
00:08:10,960 --> 00:08:13,960
Schnell haben wir in Folge 2 
auch aufgearbeitet, das Image 

175
00:08:13,960 --> 00:08:18,080
ist im Prinzip so eine Art 
Blaupause oder ein Template für 

176
00:08:18,080 --> 00:08:20,040
ein bestimmt aussehendes 
virtuelles System. 

177
00:08:20,040 --> 00:08:22,560
Ich könnte zum Beispiel sagen, 
ich habe ein Image von einem von

178
00:08:22,800 --> 00:08:26,560
einem Debian Linux System, 
worauf ich dann irgendwie noch 

179
00:08:26,560 --> 00:08:28,440
spezieller Abhängigkeiten 
installiert habe, zum Beispiel 

180
00:08:28,440 --> 00:08:30,120
Tensor Flow von Google oder 
irgend sowas. 

181
00:08:30,950 --> 00:08:33,549
Und bereite mir das System vor 
und kann da quasi Sachen 

182
00:08:33,549 --> 00:08:35,549
reinkopieren. 
Auch meine zum Beispiel meine 

183
00:08:35,549 --> 00:08:39,950
Anwendung oder bestimmte Skripte
oder Irgendsowas und dann ist so

184
00:08:39,950 --> 00:08:42,390
n Image quasi fertig und dann 
kann ich, wenn ich das Image 

185
00:08:42,390 --> 00:08:45,190
quasi ausführe, dann wird sofort
n Container. 

186
00:08:45,190 --> 00:08:48,870
Ja das Image ist immer nur ne 
statisches abgeschlossenes 

187
00:08:48,870 --> 00:08:53,350
festes Ding, ein Template und 
wenn ich es anfange auszuführen 

188
00:08:53,350 --> 00:08:55,790
wird das quasi ein Container und
mit Leben erweckt, so als würde 

189
00:08:55,790 --> 00:08:58,350
ich den Computer anschalten, der
auf der dieses Betriebssystem 

190
00:08:58,350 --> 00:09:01,480
quasi vorinstalliert hat mit. 
Den ganzen Sachen, die ich im 

191
00:09:01,480 --> 00:09:03,560
Image festgehalten habe, quasi 
vorbereitet. 

192
00:09:03,560 --> 00:09:06,480
Und den mache ich dann quasi 
einfach an und ich könnte aber 

193
00:09:06,480 --> 00:09:08,680
ganz viele Rechner anmachen. 
Also ich kann dieses Image 

194
00:09:08,760 --> 00:09:10,560
mehrfach instanzieren sage ich 
mal. 

195
00:09:10,560 --> 00:09:13,440
Also mehrfache Container machen,
die sehen dann innen drinne alle

196
00:09:13,440 --> 00:09:17,360
exakt gleich aus und hab halt 
aber immer genau das gleiche 

197
00:09:17,360 --> 00:09:21,000
Setting drumherum, das nennt 
sich dann der Container ich für 

198
00:09:21,000 --> 00:09:24,000
Leute, die Objektorientiertes 
programmieren kennen, dann mache

199
00:09:24,000 --> 00:09:26,520
ich immer gerne diese Analogie, 
Image und Container verhält sich

200
00:09:26,520 --> 00:09:29,240
so wie Klasse und Instanz oder 
Klasse und Objekte. 

201
00:09:30,080 --> 00:09:31,320
In der Klasse definiere ich 
alles hin. 

202
00:09:31,790 --> 00:09:33,670
Was passiert beim beim Errichten
der Klasse? 

203
00:09:33,670 --> 00:09:35,430
Welche Methoden hab ich und so 
weiter was soll ich zur 

204
00:09:35,430 --> 00:09:37,190
Verfügung? 
Das ist quasi das Image und ne 

205
00:09:37,190 --> 00:09:41,070
Instanz quasi, die ist quasi ein
lebendes Abbild dieser dieses 

206
00:09:41,070 --> 00:09:43,510
Templates und kann sich dann 
auch verändern über die Zeit. 

207
00:09:43,510 --> 00:09:45,870
Ja das ist so auch beim 
Container, ich kann mit dem 

208
00:09:45,870 --> 00:09:48,430
Container richtig arbeiten, die 
Anwendung, ich kann, da können 

209
00:09:48,430 --> 00:09:50,310
Daten geschrieben werden, es 
kann ne Datenbank da drin sein, 

210
00:09:50,310 --> 00:09:52,950
die kann sich füllen und so 
weiter wenn ich aber nichts 

211
00:09:52,950 --> 00:09:56,790
mache, dann ist alles was du 
getan hast bleibt im Container 

212
00:09:56,790 --> 00:09:58,190
sage ich mal. 
Ja so ein bisschen wie auf der 

213
00:09:58,190 --> 00:10:00,790
Party sagt alles was irgendwie 
was da passiert. 

214
00:10:00,880 --> 00:10:02,960
Ist bleibt da irgendwie. 
Das wird alles wieder mit 

215
00:10:02,960 --> 00:10:06,080
abgeräumt so ja, also da bleibt 
nichts übrig, ja keiner weiß 

216
00:10:06,080 --> 00:10:09,600
mehr was da passiert ist. 
Also was blöd ist ja normal. 

217
00:10:09,600 --> 00:10:11,880
Also im Produktivbetrieb ist das
nicht was du möchtest. 

218
00:10:11,880 --> 00:10:13,560
Wenn du in der Datenbank was 
reinschreibst und Leute 

219
00:10:13,560 --> 00:10:16,520
irgendwie was mit deinem 
Webservice interagiert haben und

220
00:10:16,520 --> 00:10:19,560
du machst das quasi aus den 
Container, was eine normale 

221
00:10:19,560 --> 00:10:22,680
Sache ist, weil wenn du ein 
Upgrade haben willst, dann lass 

222
00:10:22,680 --> 00:10:24,680
dir quasi eine neue Version von 
deinem Quellcode da drinne. 

223
00:10:24,680 --> 00:10:27,040
Ja und wenn du dann nichts 
machst, dann wäre alles weg und 

224
00:10:27,040 --> 00:10:30,120
dann fängst du wieder bei 0 an. 
Das ist nicht, was man will und 

225
00:10:30,120 --> 00:10:31,840
das führt mich zum zweiten 
Konzept. 

226
00:10:31,840 --> 00:10:34,310
Das zweite wichtige Konzept. 
Nicht neben Image und Container 

227
00:10:34,310 --> 00:10:39,070
ist das sogenannte Volume. 
Ja, und hier ist das erste Mal, 

228
00:10:39,070 --> 00:10:41,470
wo wir quasi die Grenze zwischen
ich hab ja gesagt, ist alles 

229
00:10:41,470 --> 00:10:45,830
gekapselt ne und Unabhängigkeit 
haben wir da, aber das Volume 

230
00:10:45,830 --> 00:10:47,790
führt dazu, dass ich quasi 
Daten. 

231
00:10:48,350 --> 00:10:51,070
Es gibt 2 Arten von Volumes. 
Ich nenn das gleich, aber 

232
00:10:51,070 --> 00:10:55,190
erstmal ist es so, dass ich 
quasi Daten persistieren kann, 

233
00:10:55,190 --> 00:10:59,630
also speichere außerhalb des 
Containers und zwar auf dem 

234
00:11:00,150 --> 00:11:02,230
Host. 
US sagt man immer, also auf dem 

235
00:11:02,230 --> 00:11:04,670
außenliegenden Betriebssystem 
was drumherum ist. 

236
00:11:04,670 --> 00:11:07,510
Was dir quasi das Dockersystem 
laufen lässt. 

237
00:11:08,030 --> 00:11:11,870
Darauf wird dann quasi werden 
dann Daten gespeichert und in 

238
00:11:11,870 --> 00:11:15,030
den Container gemountet sag ich 
mal, der Container kann quasi 

239
00:11:15,030 --> 00:11:16,630
über diese Containergrenze 
hinaus. 

240
00:11:17,440 --> 00:11:19,480
Live lesend und schreibend, je 
nachdem, man kann es aufzwingen,

241
00:11:19,480 --> 00:11:21,320
dass es nur lesen kann oder 
irgend sowas, aber 

242
00:11:21,320 --> 00:11:24,840
typischerweise kann es einfach 
lesend und schreibend auf das 

243
00:11:24,840 --> 00:11:27,600
außenliegende System zugreifen, 
um Daten zu sichern. 

244
00:11:27,840 --> 00:11:30,160
Damit kann ich erreichen, dass 
ich den Container ausschalten 

245
00:11:30,160 --> 00:11:34,280
kann und wieder anschalten kann 
und dann guckt er quasi auf 

246
00:11:34,280 --> 00:11:36,840
diese vorher gesicherten Daten 
und kann zum Beispiel seine 

247
00:11:36,840 --> 00:11:39,960
Datenbank wiederherstellen, 
damit kann ich quasi dafür 

248
00:11:39,960 --> 00:11:42,600
sorgen, dass ich bestimmte Daten
nicht verlieren will oder 

249
00:11:42,600 --> 00:11:43,840
verliere, die ich nicht 
verlieren möchte. 

250
00:11:44,960 --> 00:11:48,200
Das heißt aber quasi, wenn man 
den aufstellt, wäre so eine 

251
00:11:48,200 --> 00:11:50,440
Datenbank auch wieder leer und 
der kann sich nur die kann sich 

252
00:11:50,440 --> 00:11:52,520
nur wieder füllen, in dem man 
nach dem Neustart. 

253
00:11:53,350 --> 00:11:55,430
Das Volume guckt und sich die 
Daten wiederholt. 

254
00:11:55,550 --> 00:11:57,390
Ne, das passiert dann 
automatisch ist wieso n Mount? 

255
00:11:57,390 --> 00:12:00,510
Du kannst dir das vorstellen, du
manchmal kennt man das im im im 

256
00:12:00,510 --> 00:12:03,110
im Windows ne wenn du im 
Explorer quasi so ne Art ja es 

257
00:12:03,110 --> 00:12:04,950
gibt zusammenbauen oder 
irgendsowas ne, da sagst du 

258
00:12:04,950 --> 00:12:06,510
quasi ich hab n netzwerklaufwerk
ja. 

259
00:12:07,110 --> 00:12:09,550
Und das ist sofort immer da. 
Ja, und das ist genauso 

260
00:12:09,550 --> 00:12:11,190
funktioniert es n Docker, du 
sagst halt bestimmte 

261
00:12:11,190 --> 00:12:13,870
tatsächlich, also wenn du so n 
so n bind Mount jetzt fühlt mich

262
00:12:13,870 --> 00:12:17,630
das dazu, du kannst halt sagen 
ich beziehe mich auf n ganz 

263
00:12:17,630 --> 00:12:20,670
bestimmten Ordner, zum Beispiel 
in dem außenliegenden File 

264
00:12:20,670 --> 00:12:22,550
System. 
Ja und wenn ich den Docker 

265
00:12:22,550 --> 00:12:25,670
Container anmache, dann ist 
sofort das da drinne was außen 

266
00:12:25,670 --> 00:12:28,350
anliegt ja und es ist 
tatsächlich sogar wenn du so ein

267
00:12:28,350 --> 00:12:33,070
Pfeil im Mount nennt sich das 
also ein File Volume quasi hast,

268
00:12:33,230 --> 00:12:35,950
dann ist es sogar so, dass wenn 
du außen manipulierst innen 

269
00:12:35,950 --> 00:12:39,790
sofort auch geändert ist ist war
Spiegel ja, also der Container 

270
00:12:39,790 --> 00:12:43,030
guckt quasi auf einen auf eine 
bestimmte Datei oder einen 

271
00:12:43,030 --> 00:12:45,430
Ordner. 
Ja wo Dateien drin sind, in 

272
00:12:45,430 --> 00:12:48,270
deinem Fall System des 
Außenlicht, ja ist nachher noch 

273
00:12:48,270 --> 00:12:51,430
ganz wichtig oder aber du hast 
quasi einfach nur wirklich nen 

274
00:12:51,430 --> 00:12:55,510
nen nen Datenhalde das sind die 
named Volumes, da willst du 

275
00:12:55,510 --> 00:12:58,150
nicht sagen das liegt in einem 
bestimmten Ordner, in meinem 

276
00:12:58,150 --> 00:13:00,310
Fall System sondern du willst 
einfach nur sagen hier liegt 

277
00:13:00,310 --> 00:13:04,150
quasi ein benahmtes Volume, auf 
meinem Fall System wo ich nie 

278
00:13:04,150 --> 00:13:06,670
reingucke eigentlich und das ist
einfach ein Datenspeicher 

279
00:13:06,990 --> 00:13:08,310
typischer Anwendungsfall deine 
Daten. 

280
00:13:08,630 --> 00:13:11,390
Also wenn wir ne Postgres haben,
dann guckt man typischerweise in

281
00:13:11,390 --> 00:13:13,670
der Post Quest wo speichert die 
Post Quest tatsächlich ihre 

282
00:13:13,670 --> 00:13:17,070
Daten und dann würde man quasi 
sagen, OK, diesen Speicherort 

283
00:13:17,070 --> 00:13:19,710
der Daten daraus machst du n 
benahm des Volume zum Beispiel 

284
00:13:19,710 --> 00:13:21,350
Database, kannst du es einfach 
nennen. 

285
00:13:21,350 --> 00:13:24,870
Ja das ist n Volume im sagst du 
dann im Container und wenn dann 

286
00:13:24,870 --> 00:13:27,110
die Datenbank agiert und 
schreibt dann tut sie das 

287
00:13:27,110 --> 00:13:29,790
eigentlich in dieses Benahmte 
Volume rein, was außerhalb des 

288
00:13:29,790 --> 00:13:32,510
Containers liegt. 
Wenn du den Container neu 

289
00:13:32,510 --> 00:13:35,430
startest, dann ist quasi die 
Datenbank da musst du eine 

290
00:13:35,430 --> 00:13:38,350
Abfragelogik haben, das kann ja 
sein, denn der Container ganz am

291
00:13:38,350 --> 00:13:40,110
Anfang. 
Nicht also musst du irgendwie 

292
00:13:40,110 --> 00:13:43,070
diesen if haben, wenn ich noch 
nie ne Datenbank hatte, dann 

293
00:13:43,070 --> 00:13:46,950
setzt die auf und Fang an das in
dieses Volume zu speichern oder 

294
00:13:46,950 --> 00:13:48,590
aber wenn ich halt jetzt 
irgendwie die Datenbank schon 

295
00:13:48,590 --> 00:13:51,230
hatte was man sieht wenn man auf
dieses Volume guckt ja sieht man

296
00:13:51,230 --> 00:13:54,030
ja OK ich hab schon hier n 
Datenbanken Tabellen dann ist es

297
00:13:54,030 --> 00:13:58,230
halt einfach da ja Punkt so das 
ist wichtig also datenpersistenz

298
00:13:58,510 --> 00:14:01,830
erreiche ich über Volumes und 
dann haben wir noch eine 

299
00:14:01,830 --> 00:14:04,830
wichtige und es gibt noch viel 
mehr Konzepte ich hab nur die 

300
00:14:04,830 --> 00:14:06,430
wichtigsten rausgepickt das 
Netzwerk. 

301
00:14:07,480 --> 00:14:10,720
Ich hatte ja gesagt, wenn wir, 
wenn wir so eine Horde von 

302
00:14:10,720 --> 00:14:13,280
Microservices haben, dann ist es
wie ein verteiltes System. 

303
00:14:13,560 --> 00:14:16,760
Das ist auch wirklich, und es 
heißt, wirkliche 

304
00:14:16,760 --> 00:14:21,960
Netzwerkarchitekturen greifen in
der Welt über Microservices 

305
00:14:21,960 --> 00:14:23,480
hinweg. 
Wir hatten zum Beispiel auch 

306
00:14:23,480 --> 00:14:26,240
schon eine Folge, wo ging es um 
Netzwerksegmentierung als 

307
00:14:26,240 --> 00:14:28,360
Sicherheit, zum Beispiel, wenn 
du, wenn du ein shopfloor 

308
00:14:28,360 --> 00:14:30,640
Netzwerk in einer Firma hast, 
dann kannst du in verschiedene 

309
00:14:30,640 --> 00:14:32,800
Unternetze verteilen und so 
weiter das kannst du alles mit 

310
00:14:32,800 --> 00:14:35,920
Microservices auch machen. 
Du kannst quasi also den 

311
00:14:35,920 --> 00:14:38,640
einzelnen Containern, wenn sie 
dann ausführen, ein Netzwerk 

312
00:14:38,640 --> 00:14:41,440
zuweisen, in dem sie ausführen. 
Und damit kannst du es bestimmt 

313
00:14:41,440 --> 00:14:44,630
Container. 
Ausschließen oder Einschließen 

314
00:14:44,670 --> 00:14:47,470
in einer Kommunikation mit 
anderen Containern in diesem 

315
00:14:47,470 --> 00:14:51,750
microservice Netzwerk, das hat 
viel mit Sicherheit zu tun, weil

316
00:14:51,750 --> 00:14:56,150
oft hast du was weiß ich 4567 10
Container und es müssen nicht 

317
00:14:56,150 --> 00:14:57,910
alle miteinander sprechen, ja 
zum Beispiel. 

318
00:14:58,150 --> 00:15:00,630
Die Datenbank nur mit einem All 
Service sprechen oder irgendwas 

319
00:15:00,630 --> 00:15:02,150
Database hast. 
Dann packst du nur die in n 

320
00:15:02,150 --> 00:15:04,550
Netzwerk und die anderen kommen 
n anderes Netzwerk. 

321
00:15:04,550 --> 00:15:06,830
Ja so machst du n 
Netzwerksegmentierung ne das 

322
00:15:06,830 --> 00:15:09,750
kannst du aber alles ist alles 
virtuell quasi über diese 

323
00:15:09,750 --> 00:15:11,990
Orchestratoren dann geregelt 
weil ich schon vorher gesprochen

324
00:15:11,990 --> 00:15:14,510
hab. 
So, und das ist als Recap, würde

325
00:15:14,510 --> 00:15:17,750
ich sagen, reicht es erstmal und
dann gucken wir uns gleich n 

326
00:15:17,750 --> 00:15:19,270
bisschen tiefer an was los ist. 
Hab ich das? 

327
00:15:19,550 --> 00:15:22,550
Richtig verstanden, dass man auf
jeden Fall einen Orchestrator 

328
00:15:22,550 --> 00:15:23,910
benötigt. 
Du kannst nicht ohne 

329
00:15:23,910 --> 00:15:26,790
orchestrator Docker benutzen 
oder es macht dann zumindest 

330
00:15:26,790 --> 00:15:28,590
wenig Sinn. 
Ich würde das so. 

331
00:15:28,590 --> 00:15:30,190
Ich würde das bejahen. 
Ja, also kannst du 

332
00:15:30,190 --> 00:15:33,590
wahrscheinlich mit mit Docker 
run also aber das macht keiner. 

333
00:15:33,590 --> 00:15:36,870
Ja also also du kannst also zum 
Spaß wenn du es anguckst. 

334
00:15:36,870 --> 00:15:39,190
Es gibt diesen Dockerbefehl, das
muss man mal sagen, es gibt da 

335
00:15:39,190 --> 00:15:41,910
so ne Kommandozeile, gibt es 
quasi den den Docker. 

336
00:15:42,390 --> 00:15:44,870
Ne, nur Docker eingibst und hast
ne ganze Sorte von Befehlen. 

337
00:15:44,870 --> 00:15:48,190
Die sind aber meistens nur dafür
da Container, also Images zum 

338
00:15:48,190 --> 00:15:50,750
Beispiel zu erstellen, ja oder 
in einen einzelnen Container 

339
00:15:50,750 --> 00:15:52,510
reinzuschauen und so weiter und 
sofort ja. 

340
00:15:53,430 --> 00:15:55,830
Wenn du ne Anwendung hast, bist 
du immer im Augustator 

341
00:15:55,830 --> 00:15:57,230
unterwegs. 
Ja, und das ist zum Beispiel 

342
00:15:57,230 --> 00:16:00,110
Docker Composer genau. 
Ja, den nehmen wir auch, oder? 

343
00:16:00,110 --> 00:16:03,990
Wir nehmen Docker compose ja 
genau, es gibt viele, die die 

344
00:16:03,990 --> 00:16:05,910
bei uns vielleicht schon dann in
einer Richtung Kybernetik 

345
00:16:05,910 --> 00:16:09,230
greifen würden. 
Ich sag ja immer, gibt es think 

346
00:16:09,230 --> 00:16:12,960
simple as you can, es dauert. 
Vielleicht auch einen Moment, 

347
00:16:12,960 --> 00:16:15,320
bis man mit einem Docker compose
sich das so zurechtgelegt hat, 

348
00:16:15,320 --> 00:16:16,840
bis man alles so hat, wie man es
braucht. 

349
00:16:16,840 --> 00:16:19,800
Vielleicht einen Schluck 
manueller, also kymanitis macht 

350
00:16:19,800 --> 00:16:23,120
ein paar Sachen mehr automatisch
als Docker compose, aber meiner 

351
00:16:23,120 --> 00:16:25,320
Meinung nach kommt man mit 
Docker compose genauso weit wie 

352
00:16:25,320 --> 00:16:30,440
Kybernetisch bis zum gewissen 
Maß so ja, aber für unseren 

353
00:16:30,440 --> 00:16:33,640
Anwendungsfall reicht Docker 
Compose völlig aus und ich 

354
00:16:33,640 --> 00:16:36,200
glaube für viele, auch für viele
andere auch und ich finde es 

355
00:16:36,200 --> 00:16:39,160
spricht überhaupt nichts dagegen
Docker compose zu nehmen als 

356
00:16:39,160 --> 00:16:41,880
Orchestrator. 
Vorteile sehen wir gleich noch. 

357
00:16:41,880 --> 00:16:46,560
Also jetzt haben wir Konzeptuell
kurz gesprochen, was Stocker ist

358
00:16:46,560 --> 00:16:50,840
und welches die wichtigsten. 
Wichtigsten Konzepte sind genau 

359
00:16:50,840 --> 00:16:52,240
jetzt gucken wir mal, wie 
arbeitet Stocker, wie 

360
00:16:52,240 --> 00:16:53,600
funktioniert das eigentlich, was
ist das? 

361
00:16:54,390 --> 00:16:59,710
Es gibt quasi also auf jedem 
Computer, der mit Docker 

362
00:16:59,710 --> 00:17:03,950
Containern umgehen können soll, 
muss der sogenannte Docker demon

363
00:17:03,950 --> 00:17:04,589
laufen. 
Ne? 

364
00:17:05,750 --> 00:17:08,349
Was ist der Docardime ne? 
Klingt so, klingt so 

365
00:17:08,349 --> 00:17:10,109
geheimnisvoll, deamon ist ja 
eigentlich nur, das ist ja 

366
00:17:10,190 --> 00:17:12,190
eigentlich nur das Team mit 
klingt überwiesen, ich hab immer

367
00:17:12,190 --> 00:17:14,750
an Drachen gedacht oder 
irgendwas früher so, aber es ist

368
00:17:14,750 --> 00:17:16,589
eigentlich in Deanman heißt 
eigentlich nichts anderes als n 

369
00:17:16,589 --> 00:17:17,310
Dienst. 
Ja. 

370
00:17:17,869 --> 00:17:21,230
Der halt irgendwie 24 7 
irgendwie da ist, sobald das 

371
00:17:21,230 --> 00:17:25,390
Betriebssystem startet sag ich 
mal ja und und und ansprechbar 

372
00:17:25,390 --> 00:17:28,190
ist und der Dockertypen ist 
nichts anderes als n ganzen 

373
00:17:28,190 --> 00:17:32,310
stinknormaler Rest full Server 
ja also Rest API Invest hatten 

374
00:17:32,310 --> 00:17:33,830
wir auch schon in der Folge. 
Wer da jetzt gerade nicht 

375
00:17:33,830 --> 00:17:36,390
Bescheid falls er da wieder rein
aber es ist ein Rest Server ja 

376
00:17:36,390 --> 00:17:40,080
am Ende des Tages. 
Der gestartet wird und sich 

377
00:17:40,080 --> 00:17:42,560
einhängt als demon ins System 
wenn du halt docker installierst

378
00:17:42,560 --> 00:17:44,480
und docker kannst du 
installieren auf dem Linux auf 

379
00:17:44,480 --> 00:17:47,720
dem Windows mittlerweile auf Mac
OS und auch auf Edge Devices und

380
00:17:47,720 --> 00:17:50,680
so weiter das hat extrem krasse 
Verbreitung gefunden weil es 

381
00:17:50,680 --> 00:17:54,960
halt so praktisch ist halt in 
Containern Software zu machen so

382
00:17:54,960 --> 00:17:58,040
haben wir den docker demon und 
dann haben wir den docker Client

383
00:17:58,040 --> 00:17:59,520
also wenn du einen Server hast 
dann brauchst du noch 

384
00:17:59,520 --> 00:18:02,640
typischerweise auch einen Client
den sieht man immer gar nicht so

385
00:18:02,640 --> 00:18:06,320
als Rest API Client da haben 
viele Leute jetzt hier irgendwie

386
00:18:06,320 --> 00:18:09,160
curl im Kopf oder postman und 
ich musste irgendwelche gats. 

387
00:18:09,430 --> 00:18:11,710
Durch die Gegend schicken? 
Ja, muss ich eigentlich, aber 

388
00:18:11,710 --> 00:18:14,470
gekapselt, denn der 
Dockerbefehls, was ich gerade 

389
00:18:14,470 --> 00:18:16,750
gesagt hab, wenn du sagst, 
Docker Run oder Docker Build 

390
00:18:16,750 --> 00:18:18,670
oder Docker Exec oder 
Irgendsowas diese ganzen 

391
00:18:18,670 --> 00:18:21,190
Befehle, das nennt sich ja ne 
Seal Eyes, ein Command Line 

392
00:18:21,190 --> 00:18:24,990
Interface sogenanntes und das so
hat er auf dem Terminal, das ist

393
00:18:24,990 --> 00:18:28,590
quasi so ne Art Überbau unten 
drunter wenn du sagst Docker run

394
00:18:28,590 --> 00:18:30,510
ist, dann gehen tatsächlich Post
Requests ab. 

395
00:18:30,710 --> 00:18:32,630
Wenn du sagst zeig mir mal alle 
Container an, dann macht der 

396
00:18:32,630 --> 00:18:36,110
irgendwo drunter nen Get Call 
gegen diesen Restfulserver sehen

397
00:18:36,110 --> 00:18:37,310
wir nun nicht weil es gekapselt 
ist. 

398
00:18:37,310 --> 00:18:40,600
Ne Seal Eye. 
Das ist quasi das zweite Ding, 

399
00:18:40,600 --> 00:18:42,320
wie du dann. 
Das ist quasi wie kannst du 

400
00:18:42,320 --> 00:18:45,840
Docker benutzen und kurzer 
Seiten reinstich da gehen wir 

401
00:18:45,840 --> 00:18:48,800
heute nicht tief rein, aber weil
es so ist, das ist einfach 

402
00:18:48,800 --> 00:18:52,600
Client Server, Architektur ist 
nach Rest Best Practice und 

403
00:18:52,600 --> 00:18:56,880
sogar Jason. 
Als Message und so weiter also 

404
00:18:56,880 --> 00:19:00,480
alles ganz klassisch. 
Kannst du auch aus deiner 

405
00:19:00,480 --> 00:19:04,840
Anwendung heraus diesen Docker 
demon steuern und du kannst so 

406
00:19:04,840 --> 00:19:06,800
wilde Sachen machen wie 
innerhalb eines Docker 

407
00:19:06,800 --> 00:19:09,840
Containers dafür sorgen, dass 
andere Docker Container 

408
00:19:09,840 --> 00:19:11,920
gestartet werden, da gestoppt 
werden und so weiter weil du 

409
00:19:11,920 --> 00:19:14,030
einfach quasi. 
Dieser Rest Verbindung aufbauen 

410
00:19:14,030 --> 00:19:17,350
kannst gegen den den Server und 
dann kannst du mit dem ganzen 

411
00:19:17,350 --> 00:19:18,830
Infrastruktur von Docker auch 
spielen. 

412
00:19:18,830 --> 00:19:20,870
Ne, du kannst dir quasi deine 
eigenen Orchestrator 

413
00:19:20,870 --> 00:19:24,230
programmieren, selber ja machen 
wir auch zum Teil ja das braucht

414
00:19:24,230 --> 00:19:28,110
man immer dann wenn man quasi. 
Wenn man in der Runtime quasi 

415
00:19:28,110 --> 00:19:30,430
neue Container haben will, ja 
und so weiter für für n 

416
00:19:30,430 --> 00:19:33,470
Kundenaccount oder irgend sowas 
ja als kleiner Seitennotiz das 

417
00:19:33,470 --> 00:19:35,310
geht halt auch wegen dieser 
Architektur ja. 

418
00:19:35,430 --> 00:19:38,350
Das heißt, wenn wenn du sagst 
für n Kundenaccount das heißt, 

419
00:19:38,350 --> 00:19:41,590
wenn sich bei uns jemand bei der
heißen wär n Account anlegt. 9 

420
00:19:41,590 --> 00:19:45,030
dann werden Container gestartet.
Ja oder oder erstellt. 

421
00:19:45,030 --> 00:19:48,630
Speziell für diesen Kunden. 
Ja genau so, das passiert auch 

422
00:19:48,630 --> 00:19:50,750
irgendwo anders im Container, 
der schon da ist. 

423
00:19:50,870 --> 00:19:52,950
Es gibt nämlich einen Container,
der ist tatsächlich bei uns 

424
00:19:52,950 --> 00:19:55,550
Docker, also ist n Docker 
Container, den wir Docker 

425
00:19:55,550 --> 00:19:58,510
genannt haben und dieser Docker 
Container hat die Möglichkeit 

426
00:19:58,510 --> 00:20:01,110
tatsächlich andere Docker 
Container ins Leben zu rufen und

427
00:20:01,110 --> 00:20:03,390
das ist genau das was du sagst 
passiert, wenn jemand bei uns 

428
00:20:03,390 --> 00:20:06,150
einen Account registriert, dann 
passieren viele viele Dinge im 

429
00:20:06,150 --> 00:20:08,750
Hintergrund das bei anderen 
Anwendungen aber auch so und bei

430
00:20:08,750 --> 00:20:11,510
uns entstehen halt ein ganzer 
Satz neue Container für diesen 

431
00:20:11,510 --> 00:20:13,790
Account. 
Trainer entstehen basierend auf 

432
00:20:13,790 --> 00:20:15,670
Images, die Vorliegen. 
Richtig, genau. 

433
00:20:15,670 --> 00:20:17,030
Die Images müssen vorher da 
sein. 

434
00:20:17,030 --> 00:20:20,190
Genau das ist so ja immer genau 
richtig, genau und dann gibt es 

435
00:20:20,190 --> 00:20:22,950
ne dritte Komponente in diesem 
in diesem Docker technischen 

436
00:20:22,950 --> 00:20:24,830
System, das ist die Registry, 
die muss man auch mal wissen. 

437
00:20:25,790 --> 00:20:27,870
So funktioniert das, wenn ich 
wenn der Docker Klienten zum 

438
00:20:27,870 --> 00:20:32,070
Beispiel sagt, Bring mir hoch 
den Container, Hello World oder 

439
00:20:32,070 --> 00:20:34,190
sowas, den gibt es, den gibt es 
glaube ich direkt auch von 

440
00:20:34,190 --> 00:20:36,910
Docker, dann funktioniert das 
einfach, dann startet halt so n 

441
00:20:36,910 --> 00:20:40,310
Docker, obwohl der nie 
vielleicht vorher noch nie auf 

442
00:20:40,310 --> 00:20:43,150
deinem Betriebssystem war. 
Ja der kommt tatsächlich aus dem

443
00:20:43,150 --> 00:20:45,910
Internet, das funktioniert so 
ein bisschen wie github, also es

444
00:20:45,910 --> 00:20:48,550
gibt quasi eine Registry, die 
liegt, es gibt so eine 

445
00:20:48,550 --> 00:20:51,670
Offizielle die Docker Hub 
Registry, das ist. 

446
00:20:51,800 --> 00:20:57,000
Einfach eine Riesen, ein riesen 
Repository an images, da liegen 

447
00:20:57,000 --> 00:20:59,760
halt diese ganzen Images mit 
Namen und ein Tag, so 

448
00:20:59,760 --> 00:21:01,360
funktioniert das immer. 
Der Image hat immer einen Namen,

449
00:21:01,360 --> 00:21:04,200
typischerweise hast du die Firma
vorne dran, dann hast du 

450
00:21:04,200 --> 00:21:06,080
irgendwie einen Slash, also bei 
uns zum Beispiel heißen Wir 

451
00:21:06,080 --> 00:21:10,040
slash Bilderfrontend, so könnte 
ein Name sein, ja und dann kommt

452
00:21:10,040 --> 00:21:12,520
noch ein Doppelpunkt und ein Tag
dann im Tag steht meistens die 

453
00:21:12,520 --> 00:21:16,160
Version dran, weil du hast die 
die Images sind ja quasi wie 

454
00:21:16,160 --> 00:21:19,040
kleine Softwareprodukte und die 
werden durch Versioniert wenn du

455
00:21:19,040 --> 00:21:21,720
was Neues gemacht hast oder ein 
Backe fix hast dann. 

456
00:21:21,880 --> 00:21:23,320
Wird es eine neue Version von 
deinem Image machen? 

457
00:21:23,320 --> 00:21:25,840
Das steht unter dem Doppelpunkt 
und die kannst du in sogenannte 

458
00:21:25,840 --> 00:21:28,430
Regeln. 
Ablegen und wenn die, wenn 

459
00:21:28,430 --> 00:21:31,750
jemand das Recht hat, die 
Registry zu lesen mit deinem 

460
00:21:31,750 --> 00:21:35,510
Docker Client, ja dann kann der 
quasi dieses Image aus der 

461
00:21:35,510 --> 00:21:37,390
Registry holen, die irgendwo im 
Internet liegt. 

462
00:21:37,390 --> 00:21:40,070
Ja und diesen Container dann 
starten, das passiert also das 

463
00:21:40,070 --> 00:21:44,070
Image wird quasi runtergeladen, 
lokal auf dein, auf dein Host da

464
00:21:44,070 --> 00:21:46,750
gecached und dann wird der 
Container gestartet, das 

465
00:21:46,750 --> 00:21:49,110
passiert immer nur einmal. 
Ja die Images die einmal 

466
00:21:49,110 --> 00:21:51,230
aufgerufen wurden, die bleiben 
quasi gecached in deinem Host 

467
00:21:51,230 --> 00:21:53,470
System, damit der nächste Start 
schneller geht und nichts aus 

468
00:21:53,470 --> 00:21:54,950
dem Internet runtergeladen 
werden müssen. 

469
00:21:55,800 --> 00:21:57,720
So eine Registry, da gibt es 
halt 2 Teile, da gibt es halt 

470
00:21:57,720 --> 00:22:00,560
einen Public Part, das kannst du
sagen okay mein Image hier, das 

471
00:22:00,560 --> 00:22:02,480
darf jeder benutzen auf der 
ganzen Welt so und dann kannst 

472
00:22:02,480 --> 00:22:04,920
du halt einfach, wenn du den 
Namen nimmst und es nicht weiter

473
00:22:04,920 --> 00:22:07,440
geschützt, dann kann das halt 
jeder ausführen oder du sagst 

474
00:22:07,440 --> 00:22:10,160
ich habe eine private Registry, 
da musst du dann halt irgendwie 

475
00:22:10,160 --> 00:22:12,880
username Passwort vorher musste 
ich anmelden und dann geht es 

476
00:22:12,880 --> 00:22:16,520
erster wie das Halt so ist in 
der Web Welt okay also dann 

477
00:22:16,520 --> 00:22:19,720
haben wir diese 3 Dinge haben 
wir auch verstanden und jetzt 

478
00:22:19,720 --> 00:22:21,960
ist die Frage und das ist jetzt 
eigentlich jetzt können wir 

479
00:22:21,960 --> 00:22:24,040
eigentlich mal zu dem richtigen 
Inhalt auch schon ein bisschen 

480
00:22:24,040 --> 00:22:26,640
gequatscht. 
Aber das macht ja nichts. 

481
00:22:27,270 --> 00:22:31,030
Ich wollt jetzt mal irgendwie 
kurz darstellen, wenn ich das 

482
00:22:31,030 --> 00:22:33,310
jetzt alles so hab mit diesem 
ganzen Dockergedöns und so 

483
00:22:33,310 --> 00:22:35,870
weiter was heißt denn das jetzt 
wirklich wirklich, wenn ich 

484
00:22:35,870 --> 00:22:38,190
jetzt irgendwie so n kleinen 
webservice mal machen möchte, 

485
00:22:38,190 --> 00:22:40,270
ja. 
Und jetzt machen wir heute so n 

486
00:22:40,270 --> 00:22:43,590
bisschen Architektur, Software, 
Architektur für so n Webservice.

487
00:22:43,590 --> 00:22:48,230
Ja lasst uns mal kurz was 
annehmen, dass dieser Webservice

488
00:22:48,390 --> 00:22:52,110
4 Komponenten bräuchte. 
Ja ich nenne sie mal kurz ja. 

489
00:22:52,870 --> 00:22:55,310
Wir sagen mal, wir brauchen nen 
Reverse Proxy. 

490
00:22:55,830 --> 00:22:58,830
N Reverse Proxy ist hatten wir 
auch schon, ne Folge ist quasi 

491
00:22:58,830 --> 00:23:02,630
unser Heim daal ja der ist also 
der verbindet quasi das die 

492
00:23:02,630 --> 00:23:06,230
Außenwelt mit unserer Innenwelt.
Also wenn ich irgendwelche URLS 

493
00:23:06,230 --> 00:23:08,590
hab mit Slashes und Passes und 
so weiter oder irgendwelche 

494
00:23:08,590 --> 00:23:11,870
Subdomains, ja der verteilt das 
dann quasi weiter an die 

495
00:23:11,870 --> 00:23:15,870
richtigen internen Komponenten. 
So ein Reverse Proxy wird immer 

496
00:23:15,910 --> 00:23:19,270
ist immer interessant zu haben 
wenn man Microservices hat, ja. 

497
00:23:20,400 --> 00:23:22,080
Weil irgendwer muss mich ja 
quasi aufteilen auf die 

498
00:23:22,080 --> 00:23:24,160
richtigen, auf den richtigen 
Microservice. 

499
00:23:24,200 --> 00:23:26,440
Eine Anfrage von außen kommt 
also, wenn man in der Webwelt 

500
00:23:26,440 --> 00:23:29,160
sind, kommt er immer über eine 
URL rein, die URL hat irgendwie 

501
00:23:29,160 --> 00:23:31,920
eine bestimmte Struktur, der 
Reverse Proxy guckt sich diese 

502
00:23:31,920 --> 00:23:36,520
URL an und leitet nach innen, 
das zieht der Nutzer nicht mehr 

503
00:23:36,520 --> 00:23:39,200
der URL leitet nach innen auf 
einen bestimmten Microservice 

504
00:23:39,200 --> 00:23:41,240
weiter, der jetzt dafür 
verantwortlich zeichnet. 

505
00:23:41,240 --> 00:23:44,640
Ja zum Anfrage dieser Anfrage ja
so also haben wir den Reverse 

506
00:23:44,640 --> 00:23:47,240
Proxy und dann sagen, wir, haben
wir als zweite Komponente nen 

507
00:23:47,240 --> 00:23:50,600
Frontend, also eine UI und heute
mal react. 

508
00:23:50,910 --> 00:23:52,710
Merkt es ja was, was man überall
braucht. 

509
00:23:52,710 --> 00:23:54,830
Wir wollen es jetzt mal genau 
anschauen, was muss man mit 

510
00:23:54,830 --> 00:23:58,350
React machen, um um das cool 
hinzukriegen in Sachen Docker 

511
00:23:58,350 --> 00:24:01,870
und dann sagen wir, wir haben 
nen No JS backend ja also das 

512
00:24:01,870 --> 00:24:04,110
React Front entspricht ja 
irgendwie wenn es Daten braucht 

513
00:24:04,110 --> 00:24:07,470
dann mit dem No JS Backend und 
das Backend um seine Daten zu 

514
00:24:07,470 --> 00:24:10,510
halten hat ne postrace Datenbank
ja also haben wir dann den No 

515
00:24:10,510 --> 00:24:13,630
just js macht eigentlich SQL 
Anfragen gehen Post Datenbank 

516
00:24:13,630 --> 00:24:16,470
jetzt haben wir schon das habe 
ich jetzt mal architektonisch 

517
00:24:16,470 --> 00:24:18,790
einfach so auseinander genommen,
das sind jetzt auch schon 4 

518
00:24:18,790 --> 00:24:21,400
Komponenten 4. 
Komponenten, die verschiedene 

519
00:24:21,400 --> 00:24:24,720
Sachen machen und man würde 
diese 4 jetzt, wenn man wenn ich

520
00:24:24,720 --> 00:24:27,080
finde euch ordentliche 
Architektur macht, auch in 4 

521
00:24:27,080 --> 00:24:29,880
Microservices packen. 
Das heißt ich brauche hier 4 

522
00:24:29,880 --> 00:24:33,120
Images und im kleinsten Falle 
wenn das System halt jeweils 

523
00:24:33,120 --> 00:24:35,720
eine Instanz dieses Images hat, 
habe ich später 4 Container die 

524
00:24:35,720 --> 00:24:39,240
laufen und damit kann ich dann 
meinen Webservice dann irgendwie

525
00:24:39,680 --> 00:24:41,760
haben. 
Ja jetzt muss ich noch einen, 

526
00:24:41,760 --> 00:24:44,120
jetzt muss ich noch eine Sache 
sagen, jetzt ist ja heute, das 

527
00:24:44,120 --> 00:24:45,960
ist schon eine krasse 
architektonische Entscheidung, 

528
00:24:45,960 --> 00:24:48,640
ja, dass ich sage, ich habe 
meinen eigenen Reverse Proxy, ja

529
00:24:49,000 --> 00:24:51,830
und meine eigene Datenbank. 
Ich selber mir einen Docker 

530
00:24:51,830 --> 00:24:53,710
Container und orchestrier das 
selbst. 

531
00:24:53,750 --> 00:24:55,230
Weil was für die Alternative 
das? 

532
00:24:55,630 --> 00:24:57,190
Genau. 
Die Alternative ist, ich gehe 

533
00:24:57,190 --> 00:25:02,070
halt hinzu ABS oder zu Google 
Cloud oder zu Azure Cloud und 

534
00:25:02,070 --> 00:25:03,790
die haben Garrett ja diese 
ganzen. 

535
00:25:03,790 --> 00:25:06,590
Man muss sich ja vorstellen 
diese Cloud Provider, die haben 

536
00:25:06,590 --> 00:25:08,550
ja, die ist ja nicht nur ein 
Server den ihr zur Verfügung 

537
00:25:08,550 --> 00:25:12,230
stellen, wo also quasi einen 
Bret Rechner der im Internet 

538
00:25:12,230 --> 00:25:14,390
eine IP Adresse hat so ja das 
ist ja das Minimum was ich 

539
00:25:14,390 --> 00:25:17,070
brauche, aber die haben ja viel 
mehr, die haben ja diese ganzen 

540
00:25:17,070 --> 00:25:18,950
Services, dass die auch was ich 
teuer bezahle. 

541
00:25:19,150 --> 00:25:21,590
Ich könnte jetzt also auch 
sagen, und das gibt es alles. 

542
00:25:21,790 --> 00:25:24,270
Bei ABS, ich brauch halt so ne 
Art Reverse Proxy. 

543
00:25:24,270 --> 00:25:26,550
Ja das haben die, das kannst du 
einfach daneben. 

544
00:25:26,550 --> 00:25:29,590
Ja klickst du an quasi ja brauch
ich ja und dann brauch ich noch 

545
00:25:29,590 --> 00:25:32,990
ne Datenbank postg Rest ja 
klickst du auch an ne das wird 

546
00:25:32,990 --> 00:25:35,590
alles für dich gemacht ja weil 
das sind ja standardkomponenten,

547
00:25:35,590 --> 00:25:37,710
da hast du jetzt noch nicht mal 
Business Logik verbaut. 

548
00:25:37,710 --> 00:25:40,510
Ja das ist einfach, das ist eine
konfiguriert werden, das kannst 

549
00:25:40,510 --> 00:25:43,750
du halt machen und dann hast du 
schon einfach das ist ein 

550
00:25:43,750 --> 00:25:46,710
Problem schon irgendwie um 2 
Container oder 2 images kleiner 

551
00:25:46,710 --> 00:25:49,110
geworden weil du die da als 
Service nimmst. 

552
00:25:49,110 --> 00:25:51,470
Ja und dann kannst du dann quasi
selber noch sagen okay hier ist 

553
00:25:51,470 --> 00:25:53,670
mein Backend. 
Da ist das Image, das Schlag ich

554
00:25:53,670 --> 00:25:55,670
auch noch da. 
Rein ans ABS und dann Verwurste 

555
00:25:55,670 --> 00:25:59,310
das irgendwie und dann fängst du
da an im und das ist aber jetzt 

556
00:25:59,310 --> 00:26:02,790
sehr spezifisch im Google 
Business oder im AWS Sprech oder

557
00:26:02,790 --> 00:26:06,430
im Azure Sprech quasi deine 
microservice Anwendung 

558
00:26:06,430 --> 00:26:10,630
aufzubauen ja und bist aber auch
dann schon eingehängt in die 

559
00:26:10,630 --> 00:26:12,950
jeweilige Technologie, ja weil 
garantiert die Post Press 

560
00:26:12,950 --> 00:26:16,950
Datenbank anders zu integrieren 
ist bei Azure als bei AWS. 

561
00:26:17,800 --> 00:26:19,720
Also das ist die erste 
Entscheidung, die ich machen 

562
00:26:19,720 --> 00:26:21,080
will. 
Ja, wenn du jetzt eine 

563
00:26:21,080 --> 00:26:24,080
Webanwendung größer machen 
willst und langfristiger haben 

564
00:26:24,080 --> 00:26:27,880
möchtest und du nimmst halt 
diese Services von einem Cloud 

565
00:26:28,280 --> 00:26:30,840
Dienstleister, da hängst du da 
erstmal drin. 

566
00:26:30,880 --> 00:26:32,360
Das ist erstmal so schnell 
kannst du dann nicht zum 

567
00:26:32,360 --> 00:26:35,320
nächsten umziehen, weil die halt
ihre eigenen Ideen haben und 

568
00:26:35,320 --> 00:26:37,920
sowas konfiguriert. 
Im Prinzip wird der Orchestra 

569
00:26:37,920 --> 00:26:40,640
dann nicht mehr Compose was ein 
unabhängiges Produkt ist, 

570
00:26:40,960 --> 00:26:44,200
sondern der Orchestrator wird 
quasi dieser Cloud Provider zum 

571
00:26:44,200 --> 00:26:46,640
Teil. 
Also ist das hier die erste 

572
00:26:46,640 --> 00:26:49,120
krasse Entscheidung, die man 
führt, ob man, ob man sich jetzt

573
00:26:49,600 --> 00:26:52,360
ob man sowas halt mit einkauft, 
was total praktisch sein kann 

574
00:26:52,360 --> 00:26:53,560
und so. 
Deswegen gibt's das. 

575
00:26:53,910 --> 00:26:55,270
Oder ob es man es halt selber 
macht. 

576
00:26:55,270 --> 00:26:57,430
Ja, was auch total praktisch 
sein kann und auf einmal 

577
00:26:57,430 --> 00:26:58,750
unabhängig bist von dem ganzen 
Krempel. 

578
00:26:58,750 --> 00:27:00,590
Du brauchst einfach nur ne 
virtuelle Maschine mit ner IP 

579
00:27:00,590 --> 00:27:03,350
Adresse in der Cloud. 
Ja wir nehmen jetzt mal 

580
00:27:03,350 --> 00:27:06,230
zweiteres an ja und haben wir 
auch so entschieden erstmal bei 

581
00:27:06,230 --> 00:27:07,910
unseren Lösungen ja die ist halt
komplett. 

582
00:27:08,550 --> 00:27:11,190
Cloud Anbieter unabhängig ja, 
wir können halt hingehen zu wem 

583
00:27:11,190 --> 00:27:14,910
wir wollen, weil wir halt nicht 
deren interne Services nutzen 

584
00:27:14,910 --> 00:27:17,630
ne, sondern die quasi in 
Container gekapselt haben. 

585
00:27:17,630 --> 00:27:19,830
Ja. 
Kannst du schätzen wieviel mehr 

586
00:27:19,830 --> 00:27:23,710
oder weniger Aufwand das ist? 
Weil 2 * 3 * 4 oder schwer zu 

587
00:27:23,710 --> 00:27:25,510
sagen. 
Kann man das nur, kommt auf die 

588
00:27:25,510 --> 00:27:28,350
Anwendung drauf an und so weiter
und kommt ich würde mal so 

589
00:27:28,350 --> 00:27:31,670
sagen, also wenn man wenn man so
ein bisschen mehr vorhat, was 

590
00:27:32,030 --> 00:27:35,000
wie soll ich sagen also. 
Was Best Practice mäßiges zu 

591
00:27:35,000 --> 00:27:37,960
machen Standardmäßiges, wo jetzt
quasi sag ich mal die die 

592
00:27:37,960 --> 00:27:40,680
Technologie die darunter liegt 
nicht der entscheidende 

593
00:27:40,680 --> 00:27:43,080
Neuerungspunkt ist, sondern 
vielleicht der Inhalt. 

594
00:27:43,080 --> 00:27:44,800
Ja weil ich zum Beispiel 
irgendwie eine Plattform mache, 

595
00:27:44,800 --> 00:27:47,680
die bestimmte Suchanfragen 
macht, die es halt vorher noch 

596
00:27:47,680 --> 00:27:50,560
nicht gegeben hat, ja, weil ich 
quasi weil die Daten, die ich 

597
00:27:50,560 --> 00:27:52,760
halte, irgendwie den Wert 
bringen und nicht die 

598
00:27:52,760 --> 00:27:55,200
Technologie, da kann ich halt 
auch zu diesen ganzen 

599
00:27:55,240 --> 00:27:58,160
standardmäßigen Dingern greifen,
dann ist es schneller da, dann 

600
00:27:58,160 --> 00:28:01,440
reicht es ja aber, also bei uns 
ist es quasi so, dass wir bei 

601
00:28:01,480 --> 00:28:03,960
uns halt die Technologie, quasi 
das was wir verkaufen. 

602
00:28:04,510 --> 00:28:06,390
Mit diesen, mit diesen ganzen 
FC, Wir bauen und so weiter, 

603
00:28:06,390 --> 00:28:10,030
dass wir managen müssen. 
Insofern liegt da n anderer, ja 

604
00:28:10,030 --> 00:28:11,470
liegt dann anderer Schwerpunkt, 
sag ich mal. 

605
00:28:11,470 --> 00:28:14,070
Deswegen haben wir uns jetzt für
diese Variante entschieden, ne 

606
00:28:14,710 --> 00:28:17,470
genau, aber ich würde mich immer
erstmal dafür entscheiden, wenn 

607
00:28:17,470 --> 00:28:19,630
man weiß was man tut, dann ist 
es auch schnell, ja dann dann 

608
00:28:19,630 --> 00:28:22,590
verliert man da nicht viel Zeit 
ehrlich gesagt okay also nehmen 

609
00:28:22,590 --> 00:28:25,670
wir mal an wir wollen das so 
machen, dann muss man und jetzt 

610
00:28:25,670 --> 00:28:28,270
muss man doch noch eine Sache 
beachten und und die ist wahr 

611
00:28:28,270 --> 00:28:30,590
für beide Szenarien, ob ich 
jetzt da irgendwie Google 

612
00:28:30,590 --> 00:28:34,440
mitnehme oder. 
Oder das alles selber baue, was 

613
00:28:34,440 --> 00:28:37,200
man immer nicht vergessen darf 
und was nie irgendwo steht, ist 

614
00:28:37,200 --> 00:28:39,720
ja, dass das echte Leben ja 
nicht nur aus der finalen 

615
00:28:39,720 --> 00:28:42,480
Anwendung besteht, das ist ja 
schön, wenn ich die da mal habe.

616
00:28:42,480 --> 00:28:46,560
Ja, für die Nutzer der Weg dahin
oder ich würde mal sagen die 

617
00:28:46,560 --> 00:28:50,600
finale Anwendung, die wird ja zu
99,9% genutzt von den 

618
00:28:50,600 --> 00:28:53,360
Entwicklern, die müssen das den 
ganzen Tag benutzen das Ding, 

619
00:28:53,360 --> 00:28:58,040
weil die das ja entwickeln und 
dann in 0,1% der Fälle benutzt 

620
00:28:58,040 --> 00:29:00,560
das Halt mal ein echter Nutzer 
später ja das. 

621
00:29:00,720 --> 00:29:02,200
Ist schon so. 
Ja, auch bei großen Produkten. 

622
00:29:02,200 --> 00:29:04,240
Ja guck mal, die haben Hunderte 
von Entwickler, die machen jeden

623
00:29:04,240 --> 00:29:06,480
Tag 8 Stunden nichts anderes als
mit diesem Ding da zu arbeiten. 

624
00:29:06,910 --> 00:29:09,550
Zu debuggen, das Weiterzubauen 
und so weiter ja, das ist 

625
00:29:09,710 --> 00:29:11,310
wahrscheinlich immer. 
Also wenn du nicht gerade 

626
00:29:11,310 --> 00:29:14,110
youtube bist oder Spotify oder 
Irgendsowas ist glaub ich der 

627
00:29:14,110 --> 00:29:17,030
Entwickler die die die 
wichtigsten Nutzer für dein 

628
00:29:17,030 --> 00:29:18,990
Produkt sind, die Entwickler ja 
weil sie es entwickeln müssen 

629
00:29:18,990 --> 00:29:20,870
so, und das darf man nicht 
vergessen, wie wichtig das ist, 

630
00:29:20,870 --> 00:29:22,790
ja. 
Und die müssen das gut können. 

631
00:29:22,790 --> 00:29:26,110
Ja, und wenn die das gut können,
müssen und gut und und gut sehen

632
00:29:26,110 --> 00:29:28,670
wollen, ob das wirklich cool 
funktioniert, dann muss die 

633
00:29:28,670 --> 00:29:31,110
Entwicklungsumgebung sehr, sehr 
ähnlich sein zu der 

634
00:29:31,110 --> 00:29:35,110
Produktionsumgebung, das muss 
sich genauso anfühlen, und das 

635
00:29:35,110 --> 00:29:37,550
ist das mach ich mal den Punkt, 
mach ich mal ganz klar, das ist 

636
00:29:37,550 --> 00:29:40,310
total wichtig, dass man das 
hinkriegt, und es ist überhaupt 

637
00:29:40,310 --> 00:29:44,510
nicht einfach, es hinzubekommen.
Weil wenn ich entwickel, dann 

638
00:29:44,510 --> 00:29:46,990
hab ich dann hab ich irgendwie 
code den ich schreibe. 

639
00:29:46,990 --> 00:29:49,630
Ich bin in der IDE, ich schreib 
zeilencode und ich zurück, will 

640
00:29:49,630 --> 00:29:51,870
das speichern und im nächsten 
Moment muss die Anwendung auf 

641
00:29:51,870 --> 00:29:55,230
den neu gespeicherten Code 
reagieren und das haben ja in 

642
00:29:55,230 --> 00:29:58,990
einem System was hoch verteilt 
ist im Web ja was auch diese 

643
00:29:58,990 --> 00:30:00,990
Skalierungseigenschaften haben 
soll weil ich will das ja alles 

644
00:30:00,990 --> 00:30:04,430
mit testen und die 
Produktionsvariante ist so viel 

645
00:30:04,430 --> 00:30:07,230
anders ja da habe ich vor 
hochoptimierten 

646
00:30:07,230 --> 00:30:10,150
durchkompilierten Webcode der 
dann auf irgendwelche statischen

647
00:30:10,150 --> 00:30:14,000
Server geladen wird und so 
weiter und das kann man nicht 

648
00:30:14,000 --> 00:30:15,160
vergleichen. 
Das ist eine ganz andere 

649
00:30:15,160 --> 00:30:16,680
Technologie. 
Ja, und doch kriege ich es halt 

650
00:30:16,680 --> 00:30:20,880
hin mit Docker auch dieses alles
gleichzeitig abbilden zu können.

651
00:30:23,360 --> 00:30:25,600
Fein haben wir das. 
Jetzt habe ich was habe ich denn

652
00:30:25,600 --> 00:30:27,320
jetzt gesagt, jetzt habe ich 
gesagt, wir haben diese 4 

653
00:30:27,320 --> 00:30:29,800
Komponenten entdeckt, wir wollen
die in Container stecken jetzt, 

654
00:30:29,800 --> 00:30:32,240
wie sieht denn das aus in der 
Technik, dann habe ich im 

655
00:30:32,240 --> 00:30:35,000
Prinzip, ich sage jetzt mal ein 
paar, Ich mache Mono repo auf, 

656
00:30:35,240 --> 00:30:39,200
schreibe jetzt also Code Web 
Service Projekt blub blub und 

657
00:30:39,200 --> 00:30:43,080
mache erstmal 4 Ordner ja 
reverse proxy react from end no 

658
00:30:43,080 --> 00:30:45,440
js backend und Postgase 
Datenbank. 

659
00:30:45,950 --> 00:30:49,390
Zack gebum ja, alle 4 Ordner 
entsprechen quasi diesen, werden

660
00:30:49,390 --> 00:30:51,750
quasi diese 4 Microservices. 
Ja, da steckt der Code drin, der

661
00:30:51,750 --> 00:30:53,710
da irgendwie rein muss, da 
steckt die ganze Krams drin. 

662
00:30:53,710 --> 00:30:56,430
Ja wie ich das jetzt ordentlich 
machen will, dann brauchen alle 

663
00:30:56,430 --> 00:30:59,670
4 Ordner nen Dockerfile jetzt 
kommt das nächste Konzept ja. 

664
00:31:00,310 --> 00:31:02,790
Dann ja, ich hab ja gesagt, es 
muss n Image geben. 

665
00:31:02,790 --> 00:31:04,830
Ja das kommt ja nicht 
irgendwoher geflogen. 

666
00:31:04,830 --> 00:31:06,870
Ja ich muss ja definieren, 
irgendwo muss ja mal definiert 

667
00:31:06,870 --> 00:31:09,070
werden, was ist das Image, ja 
was steckt da drinne. 

668
00:31:09,070 --> 00:31:11,750
Ja und das macht das Dockerfile 
ja. 

669
00:31:12,070 --> 00:31:14,070
Das heißt Anleitung oder wie? 
Ist die Bauanleitung? 

670
00:31:14,070 --> 00:31:15,750
Ja ist das Rezept nen Image zu 
bauen? 

671
00:31:15,750 --> 00:31:19,550
Genau und das schreibt man, das 
Dockerfile, das heißt auch so 

672
00:31:19,550 --> 00:31:21,870
muss so heißen Docker File 
schreibt man typischerweise so 

673
00:31:21,870 --> 00:31:25,230
hin, das Projekt ist muss nicht 
so heißen Best Practice und das 

674
00:31:25,230 --> 00:31:28,390
Dockerfile ist quasi einen Satz 
von Instruktionen die man von 

675
00:31:28,390 --> 00:31:30,950
oben bis runter schreibt. 
Ja da gibt es. 

676
00:31:31,190 --> 00:31:33,670
Erstes typischerweise das from 
statement ich jetzt geh jetzt 

677
00:31:33,670 --> 00:31:36,190
mal kurz durch wie baue ich mit 
so einem Docker fallenden Image?

678
00:31:36,190 --> 00:31:39,790
Ja und das from Statement, das 
legt erstmal fest von welchem 

679
00:31:39,790 --> 00:31:41,790
Startpunkt fang ich an und 
typischerweise ist das n 

680
00:31:41,790 --> 00:31:45,230
Betriebssystem ja irgendso n 
Linux Ding ja also zum Beispiel 

681
00:31:45,590 --> 00:31:48,990
könnte ich sagen from Debian 
Slim oder irgend sowas ja in 

682
00:31:48,990 --> 00:31:51,550
Version irgendwas dann habe ich 
quasi erstmal im Betrieb ein 

683
00:31:51,550 --> 00:31:54,030
Linux Betriebssystem quasi 
definiert auf dem ich aufbaue, 

684
00:31:54,030 --> 00:31:57,310
ja dann gibt's aber noch viel 
bessere Froms und es gibt da 

685
00:31:57,310 --> 00:31:59,430
sogenannte Official Images, die 
haben schon ein bisschen mehr 

686
00:31:59,430 --> 00:32:00,950
drin. 
Wir nutzen zum Beispiel weil wir

687
00:32:00,950 --> 00:32:04,390
no js benutzen. 
Quasi javascript dann auch haben

688
00:32:04,390 --> 00:32:07,430
wollen und so weiter haben wir 
haben wir oft nen nen Image, das

689
00:32:07,430 --> 00:32:10,030
heißt Node. 
Ja das heißt das ist quasi dann 

690
00:32:10,030 --> 00:32:12,350
nimmst du quasi bestimmte 
Versionen von der Node JS 

691
00:32:12,350 --> 00:32:14,470
sprachen, das ist dann alles 
prima installiert und hast alles

692
00:32:14,470 --> 00:32:16,950
da. 
Ja also das liegt erstmal fest 

693
00:32:16,950 --> 00:32:21,270
auf auf wo fange ich an ja und 
dann kannst du in so einem in so

694
00:32:21,270 --> 00:32:25,070
einem Imagefile das ist auch 
wichtig, dann gibt es quasi 

695
00:32:25,630 --> 00:32:29,440
Spezial optimierte. 
Betriebssysteme, also Bunte, was

696
00:32:29,440 --> 00:32:31,480
du dir auf dem Desktop 
installierst relativ fett. 

697
00:32:31,480 --> 00:32:33,560
Ja, das soll ja auch was anderes
lösen, das soll Grafik machen, 

698
00:32:33,560 --> 00:32:35,680
so alles Mögliche haben ja so 
ein Container soll ja relativ 

699
00:32:35,680 --> 00:32:38,320
dünn und schnell starten, da 
gibt es dann die sogenannten 

700
00:32:38,320 --> 00:32:41,320
Slims und alpine und so weiter 
kann man sich mal angucken, die 

701
00:32:41,320 --> 00:32:45,560
sind halt hoch optimierte und 
runter gedampfte Betriebssysteme

702
00:32:45,560 --> 00:32:48,840
die nur noch das Nötigste haben 
im nächsten Schritt in so einem 

703
00:32:48,840 --> 00:32:51,560
Dockerpfeil wenn ich jetzt mal 
festlege zum Beispiel ein 

704
00:32:51,560 --> 00:32:53,280
Betriebssystem vielleicht mit 
einer Programmiersprache. 

705
00:32:54,400 --> 00:32:56,440
Installiere ich mir die 
Abhängigkeiten, die ich brauche?

706
00:32:57,000 --> 00:32:59,440
Warum zum Beispiel? 
Ich mache zum Beispiel Image 

707
00:32:59,440 --> 00:33:01,640
Processing oder sowas und 
brauche halt eine krasse, die 

708
00:33:01,640 --> 00:33:04,190
gibt es ja oft im. 
Gibt n Linux gibt es ja 1000 

709
00:33:04,190 --> 00:33:05,990
Pakete. 
Ja installier ich mir halt open 

710
00:33:05,990 --> 00:33:09,310
CV libreader irgend sowas. 
Ja und das mach ich indem ich 

711
00:33:09,310 --> 00:33:13,630
das Run Word Run ist ein Befehl 
im dockert Image und das tut so 

712
00:33:13,630 --> 00:33:16,630
als würde ich einfach auf der 
Command Teile von diesem. 

713
00:33:17,230 --> 00:33:19,790
Betriebssystem was ich in der 
Form Zeile ausgedrückt hab 

714
00:33:20,270 --> 00:33:21,990
Sachen machen. 
Ich kann wirklich machen was ich

715
00:33:21,990 --> 00:33:24,670
möchte, ja ich hab das gesamte 
ich hab so als hätte ich n Linux

716
00:33:24,670 --> 00:33:27,030
System ich schreib es quasi nur 
Teile für Zeile hin ne also kann

717
00:33:27,030 --> 00:33:29,590
ich sagen so du get install 
irgendwas also ich brauch und so

718
00:33:29,590 --> 00:33:31,710
weiter ja. 
Hier sollte man auch nur das 

719
00:33:31,710 --> 00:33:32,750
machen, was man wirklich 
braucht. 

720
00:33:32,750 --> 00:33:34,630
Ja, weil alles das was ich 
installiere und nicht brauche 

721
00:33:34,630 --> 00:33:36,270
macht halt das System unnötig 
fett. 

722
00:33:36,270 --> 00:33:39,270
Wir wollen ja schlank bleiben 
ja, also installiere ich hier 

723
00:33:39,270 --> 00:33:42,910
und referenziere Krams so ja und
dann dann brauch ich zum Ende 

724
00:33:42,910 --> 00:33:46,110
des Tages ja auch meinen eigenen
Code, ja der soll ja irgendwie 

725
00:33:46,110 --> 00:33:48,470
ausgeführt werden, das heißt den
muss ich da auch irgendwie 

726
00:33:48,470 --> 00:33:52,430
reinkopieren. 
Und das kann ich doch alles 

727
00:33:52,430 --> 00:33:54,750
machen. 
Und dann hab ich nen sogenannten

728
00:33:54,750 --> 00:33:56,630
Entry Point. 
Also das File hört 

729
00:33:56,630 --> 00:33:58,910
typischerweise raus mit dem 
Entry Point heißt das Wort, das 

730
00:33:58,910 --> 00:34:02,350
ist n Keyword oder Command und 
das führt dann das führt zum 

731
00:34:02,350 --> 00:34:04,510
Starten eines Programms 
typischerweise. 

732
00:34:05,270 --> 00:34:08,030
Führt das dann zu, also bei Nord
JS kann man mal sagen, das ruft 

733
00:34:08,030 --> 00:34:11,389
dann quasi zum Beispiel aus 
noteindex Punkt JS ja Index 

734
00:34:11,389 --> 00:34:14,870
Punkt JS ist das Eingangspfeil 
zu deinem zu deinem Noteprogramm

735
00:34:14,870 --> 00:34:16,949
hast du selber geschrieben was 
Index JS hast du selber 

736
00:34:16,949 --> 00:34:19,710
geschrieben ist n Teil in diesem
Ordner ja von der von dem 

737
00:34:19,710 --> 00:34:22,790
Frontend steht irgendwo in der 
Index JS file hast du da rein 

738
00:34:22,790 --> 00:34:25,429
kopiert und dann sagst du 
irgendwie im Container Note 

739
00:34:25,429 --> 00:34:29,110
Index js und dann startet quasi 
die Anwendung die du da gecodet 

740
00:34:29,110 --> 00:34:32,750
hast im Container hocher und tut
was sie soll ja oft wird der 

741
00:34:32,750 --> 00:34:36,989
Webservice Hochgejagt. 
Jetzt wollen wir, wenn wir das 

742
00:34:36,989 --> 00:34:39,909
verstanden haben, wollen wir mal
gucken. 

743
00:34:40,310 --> 00:34:44,150
Es gibt nämlich 2 Arten, wie du 
jetzt deinen Sourcecode da 

744
00:34:44,150 --> 00:34:46,270
reinklatschen kannst und das 
führt mich noch mal zu Death und

745
00:34:46,270 --> 00:34:48,030
Pott. 
Hier ist es wichtig, ja. 

746
00:34:48,949 --> 00:34:53,190
Es ist total sinnvoll, wenn du 
jetzt nen produktionsimage 

747
00:34:53,190 --> 00:34:56,870
vorbereitest. 
Es gibt quasi einen einen, ich 

748
00:34:56,870 --> 00:34:59,350
würde sagen ein Development 
Image und ein Produktionsimage. 

749
00:34:59,350 --> 00:35:03,030
Keiner sagte ja keiner zwingt 
dich ja irgendwie nur wenige 

750
00:35:03,030 --> 00:35:04,470
Images zu bauen. 
Du kannst ja images bauen wie du

751
00:35:04,510 --> 00:35:06,310
lustig bist und nennen auch wie 
du lustig bist. 

752
00:35:08,000 --> 00:35:11,720
Im Produktionsimage würdest du 
quasi deinen Sourcecode da rein 

753
00:35:11,720 --> 00:35:15,320
kopieren und Reinkompilieren und
hochoptimieren, dass da 

754
00:35:15,320 --> 00:35:18,360
irgendwie gut läuft im 
Development Image. 

755
00:35:18,360 --> 00:35:20,680
Wenn du entwickeln willst, da 
willst du nichts reinkopieren, 

756
00:35:20,680 --> 00:35:23,600
denn in dem Moment wo du den 
Code rein kopiert hast und du 

757
00:35:23,600 --> 00:35:25,800
auf der Idee tippst bist du 
entkoppelt. 

758
00:35:25,800 --> 00:35:28,520
Ja weil es ist in den Container 
kopiert ja und du bist losgelöst

759
00:35:28,520 --> 00:35:30,040
von dem was du in der Idee 
tippst. 

760
00:35:30,040 --> 00:35:32,400
Hier erinnern wir uns an das ist
Volume. 

761
00:35:32,400 --> 00:35:35,840
Ja hier würdest du sogenannte 
Volume Mount machen und sagst 

762
00:35:35,840 --> 00:35:38,040
halt du kopierst überhaupt 
nichts in den Container rein, 

763
00:35:38,240 --> 00:35:40,390
du. 
Ist jetzt aber quasi du lässt 

764
00:35:40,390 --> 00:35:44,150
den Container auf den Sourcecode
gucken, der auf deinem 

765
00:35:44,150 --> 00:35:47,710
Betriebssystem liegt, den du mit
deiner IDE zum Beispiel Visio 

766
00:35:47,710 --> 00:35:50,150
Code bearbeitest. 
Ja, das heißt, der wird da nicht

767
00:35:50,150 --> 00:35:52,390
reinkopiert, sondern nur rein 
gelingt, wenn du möchtest, ja. 

768
00:35:53,270 --> 00:35:55,390
Das führt dazu, wenn du den 
Container ausführst, dass wenn 

769
00:35:55,390 --> 00:35:58,870
du den Code änderst, sofort 
diese Änderung trotzdem im 

770
00:35:58,870 --> 00:36:01,910
Container übernommen wird. 
Das ist unglaublich wichtig, 

771
00:36:01,910 --> 00:36:02,830
wenn du jetzt zum Beispiel 
React. 

772
00:36:02,830 --> 00:36:04,470
Ich hatte gesagt, wir gucken uns
Reaction noch ein bisschen 

773
00:36:04,470 --> 00:36:05,910
genauer an, ne, wenn man React 
entwickelt. 

774
00:36:06,670 --> 00:36:09,790
Dann hast du diesen ganzen UI, 
diesen Java Script, CSS Code und

775
00:36:09,790 --> 00:36:12,550
so weiter da bist du die ganze 
Zeit am ändern und du guckst dir

776
00:36:12,550 --> 00:36:15,430
andauernd live das Ergebnis an. 
Ja so arbeitet man halt ja, du 

777
00:36:15,430 --> 00:36:18,670
hast quasi die UI vor dir an der
Nase, die führt aus Du änderst 

778
00:36:18,670 --> 00:36:21,230
den Code, drückst auf Return und
dann siehst du ja schon was du 

779
00:36:21,230 --> 00:36:23,590
geändert hast da. 
Was blau gemacht war, was vorher

780
00:36:23,590 --> 00:36:27,270
gelb war oder irgendwie was. 
Ja, und dieses Gefühl, dieses 

781
00:36:27,350 --> 00:36:29,830
dieses developer Feeling, das 
brauchst du halt auch. 

782
00:36:29,830 --> 00:36:32,790
Ja, und wenn du jetzt aber wenn 
du jetzt aber nicht willst, dass

783
00:36:32,790 --> 00:36:35,550
du jetzt komplett das ganze 
System ohne die ganzen 

784
00:36:35,550 --> 00:36:38,830
Dockercontainer aufziehst. 
Weil dann behält es dann würde 

785
00:36:38,830 --> 00:36:40,550
sich quasi dann 
developmentsystem schon sehr 

786
00:36:40,550 --> 00:36:42,990
sehr anders verhalten als das 
Product System, was ja in diesen

787
00:36:42,990 --> 00:36:45,670
Containern laufen soll. 
Ja dann müsstest du ja auch wenn

788
00:36:45,670 --> 00:36:49,430
du es machst, dein ganzes Host 
Betriebssystem mit allen diesen 

789
00:36:49,430 --> 00:36:51,590
was ich gerade gesagt hab und 
dependencies und so weiter 

790
00:36:51,590 --> 00:36:53,150
verschmutzen. 
Das willst du also nicht. 

791
00:36:53,150 --> 00:36:57,310
Ja, das heißt du bist irgendwie 
gezwungen diese React Anwendung 

792
00:36:57,910 --> 00:37:01,070
auch selbst wenn du entwickelst 
trotzdem in dem Containerauslauf

793
00:37:01,270 --> 00:37:03,030
laufen zu lassen. 
Ja und am besten ist dieser 

794
00:37:03,030 --> 00:37:04,830
Container auch Teil dieser 
Orchestrierung, die du später 

795
00:37:04,830 --> 00:37:06,430
hast, die sehr ähnlich aussieht 
wie die 

796
00:37:06,430 --> 00:37:09,270
Produktionsorchestrierung. 
Und hier wird es halt kniffelig.

797
00:37:09,270 --> 00:37:11,790
Ja, hier muss man halt gucken, 
dass man die richtigen Waffen in

798
00:37:11,790 --> 00:37:13,910
die Hand nimmt, man kann das 
machen und ich kann euch sagen, 

799
00:37:13,910 --> 00:37:16,470
es dauert ne Sekunde, vielleicht
schreib ich mal n Blog Artikel 

800
00:37:16,470 --> 00:37:19,870
dazu oder n Tiefen, das geht ja 
und ein Trick zum Beispiel ist 

801
00:37:19,870 --> 00:37:21,670
halt zum Beispiel den Code da 
nicht rein zu kopieren sondern 

802
00:37:21,670 --> 00:37:24,910
halt rein zu Mountain ne. 
Und schon läuft das trotzdem im 

803
00:37:24,910 --> 00:37:27,190
Container und ich hab kann aber 
trotzdem quasi meinen Code 

804
00:37:27,190 --> 00:37:30,990
editieren, drück auf Return und 
und seh es trotzdem live, obwohl

805
00:37:30,990 --> 00:37:33,830
das quasi ne ne Microservice 
basierte Architektur ist, die es

806
00:37:33,830 --> 00:37:35,470
ausführt, ja. 
Ja ist krass. 

807
00:37:36,270 --> 00:37:38,670
Ich, ich kann es mir vorstellen,
was da passiert irgendwie. 

808
00:37:38,670 --> 00:37:40,750
Ich kann dir folgen, aber man 
muss es wahrscheinlich mal 

809
00:37:40,750 --> 00:37:42,750
gesehen haben ne ja man. 
Muss es vielleicht mal gesehen 

810
00:37:42,750 --> 00:37:43,310
haben. 
Ja, also. 

811
00:37:43,390 --> 00:37:46,150
Ich bin gespannt auf den Block. 
Ja, das muss ich mal machen. 

812
00:37:46,230 --> 00:37:49,350
Man würde quasi auch für jetzt n
so n reacting brauchst du 

813
00:37:49,350 --> 00:37:51,750
eigentlich im Prinzip gar keinen
Docker File schreiben? 

814
00:37:51,750 --> 00:37:54,150
Ja, du kannst quasi im Orchestra
einfach sagen, ich nehme mir 

815
00:37:54,150 --> 00:37:57,710
einfach nen Image, was halt 
alles hat und das gibt's ja was 

816
00:37:57,710 --> 00:38:00,110
ich brauche, zum Beispiel für 
React und dann klemme ich da 

817
00:38:00,110 --> 00:38:02,510
einfach mal nen Code über so ein
Volume Mount rein quasi und dann

818
00:38:02,510 --> 00:38:05,120
läuft das schon. 
Wohingegen, wenn ich das jetzt 

819
00:38:05,120 --> 00:38:07,160
quasi in Production mache, das 
will ich einmal sagen, ja, und 

820
00:38:07,160 --> 00:38:09,640
da gibt's nämlich auch noch was 
cooles, da wird so was ganz 

821
00:38:09,640 --> 00:38:11,520
anderes machen. 
Da würdest du nämlich quasi 

822
00:38:12,040 --> 00:38:15,000
auch, da fängst du auch erstmal 
an, mit so einem Standard Image 

823
00:38:15,760 --> 00:38:19,880
und jetzt baust du quasi jetzt 
kopierst du den Code rein, dein 

824
00:38:19,880 --> 00:38:23,720
React Code und du installierst 
ihn auch, also du installierst 

825
00:38:23,720 --> 00:38:25,080
diese ganzen Abhängigkeiten 
fest. 

826
00:38:25,080 --> 00:38:27,800
In diesem Container, kopierst 
diesen Code rein und sagst dann 

827
00:38:27,800 --> 00:38:30,960
auch sowas wie npm install run 
Build npm RUN build sagt und 

828
00:38:30,960 --> 00:38:33,840
dann dann wird geht diese React 
Maschine an und ein Web Hack und

829
00:38:33,840 --> 00:38:35,990
so weiter und. 
Richtig krasse Sachen gebaut und

830
00:38:35,990 --> 00:38:38,550
so weiter dafür brauchst du auch
viel Umgebung. 

831
00:38:38,550 --> 00:38:40,630
Ja und dann hast du ein 
sogenanntes Artefakt, was übrig 

832
00:38:40,630 --> 00:38:43,150
bleibt von wenn du so ne wenn du
so ne UI Anwendung brauchst in 

833
00:38:43,150 --> 00:38:46,350
nem kleines javascript Paket ja.
Und dann brauchst du eigentlich 

834
00:38:46,350 --> 00:38:49,110
nur noch n statischen Server nen
Webserver, sowas wie n enginex 

835
00:38:49,110 --> 00:38:52,390
oder irgend sowas. 
Ja der dieses Paket lädt, das 

836
00:38:52,390 --> 00:38:55,350
ist das was du also mehr 
brauchst du nicht, ja und wenn 

837
00:38:55,350 --> 00:38:58,030
du jetzt aber quasi in diesem 
Image was du hast für dieses 

838
00:38:58,030 --> 00:39:00,510
produktiv, für diese produktiv 
Reader Anwendung. 

839
00:39:00,990 --> 00:39:03,750
Wenn du da alles drin machst, 
also das Bauen und so weiter, 

840
00:39:03,790 --> 00:39:06,110
dann wird das relativ großer 
Container, weil du brauchst 

841
00:39:06,110 --> 00:39:08,590
diese ganzen Abhängigkeiten um 
es überbauen zu können. 

842
00:39:08,590 --> 00:39:11,630
Ja, und hier gibt es so nen, das
muss man auch hier ist ein 

843
00:39:11,630 --> 00:39:13,670
Trick, den will ich auch sagen, 
es gibt die sogenannten Multi 

844
00:39:13,670 --> 00:39:15,630
Stage Builds, wer das noch nicht
gehört hat, muss ich das 

845
00:39:15,630 --> 00:39:17,990
unbedingt angucken ja also wenn 
ich nen Image baue kann ich 

846
00:39:17,990 --> 00:39:21,470
quasi sagen ich fang mal an mit 
einem schmutzigen Container und 

847
00:39:21,470 --> 00:39:25,590
Bau da allen möglichen Kram drin
und dann im gleichen Dockerpfeil

848
00:39:25,590 --> 00:39:27,870
sage ich und so und jetzt ziehe 
ich ihn noch mache ich noch ein 

849
00:39:27,870 --> 00:39:31,150
From und Fang Vanille an auf 
einem ganz kleinen. 

850
00:39:31,750 --> 00:39:34,630
Ein oder irgend so was. 
Und da packe ich jetzt nur den 

851
00:39:34,630 --> 00:39:37,950
kleinen Webserver rein, den ich 
brauche und kopiere mir von dem 

852
00:39:37,950 --> 00:39:40,190
anderen Container der 
Schmutzcontainer das gebaut hat 

853
00:39:40,190 --> 00:39:42,990
ja das die kleinen Artefakte 
rein die ich brauche. 

854
00:39:42,990 --> 00:39:46,110
Ja das heißt ich trenne den das 
den den den den Bauschritt, den 

855
00:39:46,110 --> 00:39:48,510
Buildingschritt. 
Dann Sperrmüllcontainer den 

856
00:39:48,510 --> 00:39:51,990
schmeiß wieder raus und kopiere 
sauber nur die kleinen Elemente 

857
00:39:51,990 --> 00:39:54,270
rein in den Ausflug in den 
Produktivcontainer, den ich 

858
00:39:54,270 --> 00:39:56,950
eigentlich dann brauche. 
Ja, das nennt sich Multi Stage 

859
00:39:56,950 --> 00:39:59,590
Bild. 
Ja und dann entstehen super 

860
00:39:59,590 --> 00:40:05,190
Kleine, extrem hoch optimierte. 
Images also Docker images, die 

861
00:40:05,190 --> 00:40:08,350
zu hoch optimierten Containern 
führen, die dann die so ne 

862
00:40:08,350 --> 00:40:11,270
reactanwendung mit 15 Megabyte 
Speicher oder irgendwas 

863
00:40:11,270 --> 00:40:12,630
ausführen. 
Ja ist voll cool, ja. 

864
00:40:13,390 --> 00:40:15,030
Man muss halt wissen, dass man 
das machen muss. 

865
00:40:15,030 --> 00:40:17,990
So, das steht nicht überall. 
Ja, also das, das sind so, die 

866
00:40:17,990 --> 00:40:20,310
diese, diese kleinen Tricks, die
ich heute auch schon mal sagen 

867
00:40:20,310 --> 00:40:22,030
wollte. 
Das heißt, du findest es raus, 

868
00:40:22,030 --> 00:40:24,030
indem du einfach extrem viel 
Recherchierst liest? 

869
00:40:24,030 --> 00:40:26,390
Das ich auch total viel 
Erfahrung einfach genau oder 

870
00:40:26,390 --> 00:40:28,390
irgendwie genau er muss lesen. 
Recherche. 

871
00:40:29,230 --> 00:40:32,070
Und vielleicht am besten, Ich 
glaube, am meisten hilft sich 

872
00:40:32,070 --> 00:40:34,710
mal so ne Docker, also n gutes 
System was so ne 

873
00:40:34,710 --> 00:40:37,070
microserviceinfrastruktur mal 
programmiert hat wirklich zu 

874
00:40:37,070 --> 00:40:39,070
verstehen den Code zu lesen, 
aber es ist halt nicht einfach 

875
00:40:39,070 --> 00:40:41,990
weil überall hast du diese Files
verteilt und so weiter nicht so 

876
00:40:41,990 --> 00:40:43,110
einfach da n roten Faden zu 
kriegen. 

877
00:40:43,110 --> 00:40:45,790
Ich hab Jahre gebraucht bis ich 
das so verstanden hatte wie man 

878
00:40:45,790 --> 00:40:50,480
es so braucht. 
Weil das alles Ball dadurch, 

879
00:40:50,480 --> 00:40:52,640
dass du das entkapselierst, 
musst du halt wirklich viel 

880
00:40:52,640 --> 00:40:55,880
nachdenken, wie du das alles 
reinkriegst und so okay. 

881
00:40:56,040 --> 00:40:58,000
Aber dann haben wir das und im 
Prinzip habe ich dann meine 

882
00:40:58,000 --> 00:41:01,160
Bauanleitung für das Image in 
jedem, in jedem von diesem 

883
00:41:01,400 --> 00:41:04,520
Ordner, was später dann quasi 
der Container wird. 

884
00:41:04,800 --> 00:41:08,600
Was ich jetzt als nächstes 
brauche ist quasi den 

885
00:41:08,600 --> 00:41:10,440
Orchestrator. 
Jetzt habe ich also quasi 

886
00:41:10,440 --> 00:41:12,040
Gerrit, das haben wir vorher 
gesagt, jetzt habe ich also 

887
00:41:12,040 --> 00:41:14,800
quasi alles vorbereitet und 
sagen wir mal, wir sind fertig 

888
00:41:14,800 --> 00:41:17,320
und haben diese ganzen Images. 
Gebaut. 

889
00:41:17,560 --> 00:41:20,160
Jetzt müssen sie irgendwie ins 
Leben gerufen werden. 

890
00:41:20,160 --> 00:41:23,430
Images sind ja nur. 
Tote Templates, sag ich mal. 

891
00:41:23,430 --> 00:41:25,510
Ja, irgendwer muss jetzt ja die 
Container machen und sagen, 

892
00:41:25,510 --> 00:41:28,230
welche Netzwerke habt ihr und 
wie seid ihr gestartet werden 

893
00:41:28,230 --> 00:41:30,990
und dann, wie sollt ihr 
konfiguriert werden. 

894
00:41:30,990 --> 00:41:33,110
Das lass ich heute weg, weil es 
relativ bekannt ist. 

895
00:41:33,110 --> 00:41:35,910
Aber alle Konfigurations, also 
alle Einstellungen und so weiter

896
00:41:35,910 --> 00:41:37,830
werden immer über Environment 
Variablen gelöst. 

897
00:41:38,870 --> 00:41:40,590
Das ist so n Konzept, das kennt 
jeder Linuxer. 

898
00:41:40,590 --> 00:41:43,510
Auch gibt es natürlich auch im 
Windows, das sind quasi 

899
00:41:43,870 --> 00:41:48,550
systemweite Konfigurationen. 
Ja so n so zum Beispiel Path 

900
00:41:48,550 --> 00:41:50,630
kennt ich weiß nicht ob du mal 
die Pass Environment Variable 

901
00:41:50,630 --> 00:41:53,270
gehört hast. 
Da steht immer drin, welche 

902
00:41:53,270 --> 00:41:55,510
Programme direkt laufen dürfen 
und so weiter zum Beispiel. 

903
00:41:55,510 --> 00:41:59,790
Ja hab ich zur Pars hinzugefügt 
zur und Environment Variablen 

904
00:41:59,790 --> 00:42:02,670
sind aber das Mittel der Wahl um
um Microservices zu 

905
00:42:02,670 --> 00:42:05,430
konfigurieren, weil wir hier 
immer die denke ist quasi. 

906
00:42:06,070 --> 00:42:07,550
Fast auf ner 
Betriebssystemebene. 

907
00:42:07,550 --> 00:42:09,710
Ja und wenn ich n Betriebssystem
konfigurieren will, dann tu ich 

908
00:42:09,710 --> 00:42:12,070
das über Environment Variablen 
ja auf dem Level spiele ich 

909
00:42:12,070 --> 00:42:15,190
halt, deswegen ist das das 
Mittel der Wahl um 

910
00:42:15,190 --> 00:42:17,470
Konfigurationen vorzunehmen, das
mach ich immer über Environment 

911
00:42:17,470 --> 00:42:19,710
Variablen, da gibt es halt auch 
viel Tooling drumherum. 

912
00:42:20,110 --> 00:42:21,470
Das muss man auch gut im Griff 
haben. 

913
00:42:21,470 --> 00:42:25,430
Ne so mit Sicherheit zu tun ne 
OK, aber jetzt nehmen wir mal 

914
00:42:25,430 --> 00:42:27,870
den den Orchestrator und jetzt 
hab ich also quasi meine 4 

915
00:42:27,870 --> 00:42:30,990
Ordner da stehen meine 4 Docker 
Files drinne und jetzt brauch 

916
00:42:30,990 --> 00:42:34,310
ich quasi auf der auf der 
höchsten Ebene, also quasi 

917
00:42:34,310 --> 00:42:38,080
außerhalb dieser 4 Ordner. 
Meine Anweisung für den 

918
00:42:38,080 --> 00:42:39,960
Orchestrator. 
Es macht Sinn, weil der soll 

919
00:42:39,960 --> 00:42:43,950
quasi alle 4 sehen können. 
Und der Orchestrator mit Docker 

920
00:42:43,950 --> 00:42:47,670
compose Name ist auch wieder nen
Pfeil nen Jamel Pfeil in diesem 

921
00:42:47,670 --> 00:42:50,520
Fall. 
Typischerweise kannst du auch in

922
00:42:50,520 --> 00:42:51,960
Jase wahrscheinlich 
hinschreiben, aber es hat immer 

923
00:42:51,960 --> 00:42:55,800
Yammel genommen und das Standard
File heißt auch Docker minus 

924
00:42:55,800 --> 00:43:01,270
compose Punkt YML also. 
Und in diesem Jammelfall, man 

925
00:43:01,270 --> 00:43:04,270
kann es sich wirklich 
vorstellen, steht, das heißt, 

926
00:43:04,270 --> 00:43:06,990
Services ist quasi die erste 
Überschrift, Services, 

927
00:43:06,990 --> 00:43:10,990
Doppelpunkt und dann stehen 
erstmal alle Services aller 

928
00:43:10,990 --> 00:43:14,390
Microservices. 
Für jedes Microservice sind 

929
00:43:14,390 --> 00:43:16,390
Päckchen, wie es konfiguriert zu
werden hat. 

930
00:43:16,390 --> 00:43:19,990
Ja, also würden wir in unserem 
Beispiel hier in dem Docker 

931
00:43:19,990 --> 00:43:23,630
minus compose dot Jammel 4 
Services sehen, ne? 

932
00:43:24,270 --> 00:43:28,350
Weil wir hier 4 Microservices 
hochreißen wollen, ne und das 

933
00:43:28,350 --> 00:43:31,830
schicke ist was du was du im 
Docker compose Yaml machst ist 

934
00:43:31,830 --> 00:43:35,910
das ganze Gespiele mit den wie 
baue ich also wer also selbst 

935
00:43:35,910 --> 00:43:39,270
der Orchestrator kümmert sich 
sogar um das Bauen, tatsächlich 

936
00:43:39,270 --> 00:43:42,430
der der Image ist. 
Das Dockerfile macht nichts ist 

937
00:43:42,430 --> 00:43:46,110
nur die Bauanleitung angestoßen,
das Bauen und wie es gemacht 

938
00:43:46,110 --> 00:43:48,430
werden soll und wie das Image 
danach heißt, da steht alles im 

939
00:43:48,430 --> 00:43:53,120
Docker Compose Jamel File drin. 
Und ja, jetzt habe ich hier sehr

940
00:43:53,120 --> 00:43:55,040
viel sehr viel technisches Zeugs
aufgeschrieben. 

941
00:43:55,040 --> 00:43:57,120
Ich glaube also, ich merke 
gerade, das ist zu Hardcore 

942
00:43:57,120 --> 00:43:59,480
wird, aber ich will, ich will 
ein paar Sachen zu diesem Docker

943
00:43:59,480 --> 00:44:02,840
Composer sagen, die man auch 
nicht so weiß, die sich mir auch

944
00:44:03,040 --> 00:44:05,480
erst durch längeres Nutzen 
erschlossen haben. 

945
00:44:06,000 --> 00:44:09,120
Ich muss jetzt hier, was ich 
jetzt hier hinbekommen muss ist 

946
00:44:09,120 --> 00:44:13,760
mit diesem Docker Composer Files
quasi 2 Sorten von Umgebungen zu

947
00:44:13,760 --> 00:44:16,480
erstellen, nämlich diese 
Development Umgebung. 

948
00:44:17,360 --> 00:44:20,360
Und die Produktionsumgebung. 
Und das bekomme ich hin, nicht 

949
00:44:20,360 --> 00:44:21,960
in einem Fall, das macht man 
nicht so. 

950
00:44:21,960 --> 00:44:24,480
Es gibt ein spezielles Fall, das
heißt, das ist sogar besser 

951
00:44:24,480 --> 00:44:27,120
Praxis und es ist nicht nur 
jetzt, einen Namen, den ich mir 

952
00:44:27,120 --> 00:44:30,400
ausgedacht habe, nicht das File 
Docker Composer compose Punkt 

953
00:44:30,400 --> 00:44:35,030
Override Yaml nenne. 
Dann passiert n Magic, die ist 

954
00:44:35,030 --> 00:44:36,550
im Docker Compose mit 
eingebracht. 

955
00:44:36,550 --> 00:44:38,510
Ja, also ist jetzt nichts was 
ich mir ausgedacht hab, es ist 

956
00:44:38,510 --> 00:44:42,030
so, ja dann überschreibt quasi 
dann überschreiben die 

957
00:44:42,030 --> 00:44:45,750
Anweisungen im Docker compose 
Override heißt das schon so? 

958
00:44:46,550 --> 00:44:49,950
Also sie überschreibt es nicht, 
das Mercht es quasi, es ergänzt 

959
00:44:49,950 --> 00:44:52,510
das und wenn ich gleiche Sachen 
hab überschreibt es das ja es 

960
00:44:52,510 --> 00:44:54,430
ist ne Art mergent Replays wenn 
du willst, ja. 

961
00:44:55,390 --> 00:44:58,750
Die Sachen vom Docker compose 
Jamel ja, das kann ich dann zum 

962
00:44:58,750 --> 00:45:01,310
Beispiel nutzen und jetzt bin 
ich wieder bei React. 

963
00:45:01,310 --> 00:45:03,830
Ja, jetzt muss ich nämlich was 
ganz anderes machen im React, 

964
00:45:03,830 --> 00:45:07,390
ich muss quasi, wenn ich React 
im im Development Stil benutzen 

965
00:45:07,390 --> 00:45:09,990
will, dann muss ich sehen, dass 
der Development Server von React

966
00:45:09,990 --> 00:45:12,710
läuft. 
Dass diese, dass dieses Volume 

967
00:45:12,710 --> 00:45:14,990
mounting passiert und so weiter 
und sofort, das schreibe ich 

968
00:45:14,990 --> 00:45:17,310
alles in dieses Override rein. 
Ich kann quasi eben Docker 

969
00:45:17,310 --> 00:45:20,550
compose ja mal ausdrücken, 
welche Volumes klemm ich an 

970
00:45:20,550 --> 00:45:22,830
diesen Service ran. 
Ja also ich kann dann quasi 

971
00:45:22,830 --> 00:45:27,190
sagen, du guckst jetzt im React.
Im React Anwendung im React 

972
00:45:27,190 --> 00:45:30,230
Frontend in der Konfiguration 
von meinem Docker Compose. 

973
00:45:30,230 --> 00:45:33,870
Hier haben wir sagst du du 
guckst jetzt als Source Files 

974
00:45:34,430 --> 00:45:37,190
direkt da auf die Source auf den
Source Ordner den ich da in 

975
00:45:37,190 --> 00:45:42,390
meiner IDE hier liegen hab ja. 
Live so, und das drück ich alles

976
00:45:42,390 --> 00:45:43,990
quasi aus dem Docker compose 
Override. 

977
00:45:43,990 --> 00:45:46,830
Das will ich aber natürlich 
nicht, wenn ich in Produktion 

978
00:45:46,830 --> 00:45:48,590
bin, dann soll da keiner 
irgendwo was hingucken. 

979
00:45:48,590 --> 00:45:50,990
Ja dann muss der Code ja da 
reingenommen werden, kompiliert 

980
00:45:50,990 --> 00:45:53,230
werden, dann muss dieses Staging
kommen und so weiter und das 

981
00:45:53,230 --> 00:45:55,070
kann ich. 
Das kann ich dann alles 

982
00:45:55,070 --> 00:45:57,110
ausdrücken in einem Docker 
compose. 

983
00:45:57,110 --> 00:45:59,110
Wenn ich dann noch n prott 
jammel, so mach ich das immer. 

984
00:45:59,110 --> 00:46:02,510
Ich hab dann production yammel. 
Da steck ich quasi. 

985
00:46:02,510 --> 00:46:04,630
Das ist quasi das Gegenteil zu 
dem Override. 

986
00:46:04,630 --> 00:46:07,270
Das Override macht quasi die 
Entwicklungsumgebung und das 

987
00:46:07,270 --> 00:46:10,630
Prod macht quasi dann die 
Container fertig zur 

988
00:46:10,630 --> 00:46:13,470
Produktionsumgebung. 
Ja, da liegt dann zum Beispiel 

989
00:46:13,470 --> 00:46:16,030
fest, wie die Images heißen, da 
steht dann drin heißen wärst. 

990
00:46:16,550 --> 00:46:20,710
Hisenway, Slash, React heißen 
Wir Slash, Ingrid und so weiter 

991
00:46:20,710 --> 00:46:23,830
und sofort. 
Ja, und dann kann ich das jetzt 

992
00:46:23,830 --> 00:46:25,950
noch n bisschen Technologie 
dazu, dann kann ich quasi diese 

993
00:46:25,950 --> 00:46:27,910
Images erstellen. 
Ja, indem ich sogar Docker 

994
00:46:27,910 --> 00:46:29,670
compose. 
Das Docker Compost ist nicht nur

995
00:46:29,670 --> 00:46:32,950
zum Ausführen, ne, man kennt 
immer nur Docker Compose ab d. 

996
00:46:32,990 --> 00:46:36,150
Das was heißt das das heißt 
Bring hoch alle Microservices 

997
00:46:36,150 --> 00:46:39,150
die drin definiert sind, ja lass
die starten, das mache ich ganz 

998
00:46:39,150 --> 00:46:42,630
zum Schluss wenn ich es hab ja 
man kann aber es gibt noch Bild 

999
00:46:42,710 --> 00:46:46,430
und config will das mal erzählen
also Docker compose Bild. 

1000
00:46:46,600 --> 00:46:50,680
Und Docker compose config. 
Und wenn ich zum Beispiel Bild 

1001
00:46:50,680 --> 00:46:54,440
sage, dann werden tatsächlich 
die die Images gebaut. 

1002
00:46:54,440 --> 00:46:57,760
Ja, das heißt dann guckt und es 
gibt auch dieses Bild Keyword, 

1003
00:46:57,760 --> 00:47:01,040
dann guckt quasi der 
Orchestrator rein in die ganzen 

1004
00:47:01,040 --> 00:47:04,600
Dockerfiles und erstellt diese 
Images das erste Mal gibt denen 

1005
00:47:04,600 --> 00:47:07,680
einen Namen und tagt die auch 
hier mache ich das Ganze dieses 

1006
00:47:07,680 --> 00:47:10,240
wenn das so Magic ist. 
Wenn ich eine neue Version 

1007
00:47:10,240 --> 00:47:11,960
mache, neues Release ja dann 
habe ich. 

1008
00:47:12,800 --> 00:47:15,520
Ein Environment Variable, der 
heißt Version, die ist eingebaut

1009
00:47:15,520 --> 00:47:19,520
mit in den Tag, dann sage ich 
baue das alles und dann werden 

1010
00:47:19,520 --> 00:47:21,320
die Image gebaut für das 
Release. 

1011
00:47:22,510 --> 00:47:25,350
Und dann hab ich die alle lokal 
bei mir auf dem Rechner liegen 

1012
00:47:25,350 --> 00:47:27,870
und dann kann ich noch sagen, 
pusht die alle in die Registry. 

1013
00:47:27,870 --> 00:47:31,590
Ja und dann werden die in die 
Registry gepusht und dann kann 

1014
00:47:31,590 --> 00:47:35,390
ich n mit config kann ich n 
Docker file erstellen, das 

1015
00:47:35,390 --> 00:47:38,630
listet quasi alle diese 
Produktionscontainer die bezieht

1016
00:47:38,630 --> 00:47:40,230
sich quasi auf die 
Produktionscontainer die in die 

1017
00:47:40,230 --> 00:47:42,510
Registry gepusht habt, dann habe
ich nur noch ein großes Docker 

1018
00:47:42,510 --> 00:47:44,910
compose file, das lege ich dann 
auf den ausführenden Server 

1019
00:47:44,910 --> 00:47:48,110
raus, das kann dann irgendwas 
sein in irgendeiner Cloud dann. 

1020
00:47:48,360 --> 00:47:51,160
Habe ich ein einziges Docker 
compose File und das zieht sich 

1021
00:47:51,160 --> 00:47:55,600
dann die die Images raus bringt 
die hoch die Docker Container 

1022
00:47:55,800 --> 00:48:00,920
und führt die aus in Produktion 
während ich lokal das Docker 

1023
00:48:00,920 --> 00:48:05,840
compose abnutze weil das das 
override File gleich mit 

1024
00:48:05,840 --> 00:48:07,800
reinzieht. 
Ja und dann entstehen gar nicht 

1025
00:48:07,800 --> 00:48:09,960
erst diese Images die ich in die
Registry geladen habe und so 

1026
00:48:09,960 --> 00:48:12,800
weiter dann entsteht quasi die 
Development. 

1027
00:48:13,640 --> 00:48:16,800
Umgebung ja, mit zwar den 
gleichen Microservices, die 

1028
00:48:16,800 --> 00:48:20,200
später haben werde, aber die 
sehen von innen ganz anders aus,

1029
00:48:20,400 --> 00:48:23,240
weil die weil die zum Beispiel 
halt die Quellcode nicht da 

1030
00:48:23,240 --> 00:48:26,080
reinkompiliert haben, nicht 
reingeguckt haben, sondern nur 

1031
00:48:26,080 --> 00:48:28,750
rein Referenzen. 
Und dann kann ich, dann kann ich

1032
00:48:28,750 --> 00:48:32,390
das aber trotzdem auf dem Server
ausführen und könnte das, und 

1033
00:48:32,390 --> 00:48:34,990
das ist jetzt noch der Schickste
und der letzte Tipp den ich noch

1034
00:48:34,990 --> 00:48:38,910
hab für diesen komplexen Dings, 
wenn ich jetzt meine Development

1035
00:48:38,910 --> 00:48:42,070
Umgebung Auslage und gar nicht 
mehr lokal auf dem Laptop. 

1036
00:48:42,550 --> 00:48:45,030
Sondern direkt tatsächlich auf 
dem Server, in der Cloud, in der

1037
00:48:45,030 --> 00:48:46,710
IP Adresse hat, die von außen 
kommt. 

1038
00:48:47,190 --> 00:48:52,390
Wenn ich jetzt Docker compose so
einsetze, dass ich quasi, dass 

1039
00:48:52,390 --> 00:48:54,350
ich das so hab, wie ich das 
gesagt hab, dass ich quasi in 

1040
00:48:54,350 --> 00:48:57,270
der IDE, die ich dann benutze 
auf dem Server, das geht nämlich

1041
00:48:57,270 --> 00:49:00,150
auch heute mit Visual Studio 
Code, kannst du quasi per SSH 

1042
00:49:00,910 --> 00:49:03,870
Remote editieren und der Code 
liegt quasi schon auf dem 

1043
00:49:03,870 --> 00:49:07,430
Server, der im Internet ist. 
Dann habe ich das Beste von 

1044
00:49:07,430 --> 00:49:10,670
allen Welten, weil dann habe ich
ein unglaublich nahes Abbild 

1045
00:49:10,790 --> 00:49:13,310
meiner Produktionsumgebung, bin 
aber trotzdem. 

1046
00:49:13,590 --> 00:49:16,710
Modus Aha kann dann Visual 
Studio Code die Zeilen Code 

1047
00:49:16,710 --> 00:49:20,830
ändern und ich sehe die neue 
React Anwendung und die läuft 

1048
00:49:20,830 --> 00:49:24,070
aber schon als Teil dieser 
gleichen microservice 

1049
00:49:24,070 --> 00:49:26,590
Architektur, die später in der 
Produktion hab ja nur, dass ich 

1050
00:49:26,590 --> 00:49:28,790
in der Produktion quasi den 
Code, den Code den ich dann 

1051
00:49:28,790 --> 00:49:33,390
fertig editiert hab, nehme, 
packe und installiere quasi in 

1052
00:49:33,390 --> 00:49:37,310
diese gleichen Images, aber dann
läuft es quasi trotzdem weiter. 

1053
00:49:37,950 --> 00:49:40,830
Ihr merkt schon ich hab jetzt 
Gerrit Gerrit hat ein großes 

1054
00:49:40,830 --> 00:49:42,630
Fragezeichen, man konnte nämlich
voll abgehängt, ich hab 

1055
00:49:42,630 --> 00:49:43,870
wahrscheinlich auch alle 
abgehängt. 

1056
00:49:44,710 --> 00:49:47,430
Quasi das Ziel der Folge 
zuzusehen, dass es halt, dass 

1057
00:49:47,430 --> 00:49:49,830
man da noch nicht so viel 
geschenkt kriegt und es also es 

1058
00:49:49,830 --> 00:49:52,350
lohnt sich wirklich, in der 
Tiefe diese Dockersachen zu 

1059
00:49:52,350 --> 00:49:55,270
verstehen, weil es ist so 
unglaublich wichtig, wenn wenn 

1060
00:49:55,270 --> 00:49:58,550
man, wenn man performantisch 
schnelle Anwendung macht, ja, 

1061
00:49:58,550 --> 00:50:00,670
also es hilft nichts und nicht 
das nur halb verstanden habe und

1062
00:50:00,670 --> 00:50:04,630
den von Google oder von Abs 
diese diese Services, dann zahle

1063
00:50:04,630 --> 00:50:06,950
ich im Notfall viel Geld, das 
wird dann gehen, aber weil ich 

1064
00:50:06,950 --> 00:50:10,630
einfach mit Hardware Ressourcen 
auf nicht optimierte Soft. 

1065
00:50:10,880 --> 00:50:14,040
Ware raufhaue so ja, also wenn 
man Docker nimmt, muss man sich 

1066
00:50:14,040 --> 00:50:16,600
diese Sachen genauer angucken 
und verstehen, was da los ist. 

1067
00:50:16,600 --> 00:50:18,280
Glaube ich. 
Ja, das ist Qi, wenn nicht große

1068
00:50:18,280 --> 00:50:19,960
Webanwendung bauen will ja ich. 
Glaube das ist ein guter 

1069
00:50:19,960 --> 00:50:21,600
Hinweis. 
Ja, mein Fragezeichen wurde 

1070
00:50:21,600 --> 00:50:23,160
jetzt am Ende ein bisschen 
größer, ich würde sagen, das 

1071
00:50:23,160 --> 00:50:26,000
höre ich mir danach noch mal in 
halber Geschwindigkeit oder so 

1072
00:50:26,000 --> 00:50:30,240
an und ja, es ist natürlich auch
für die jetzt gewesen, die es 

1073
00:50:30,240 --> 00:50:32,800
benutzen wollen letzten Endes 
und auch nicht nur für die, die 

1074
00:50:32,800 --> 00:50:34,640
es benutzen wollen, sondern auch
für die, die vielleicht 

1075
00:50:34,640 --> 00:50:36,440
irgendwie mit allen Leuten 
arbeiten, die es benutzen, ja, 

1076
00:50:36,440 --> 00:50:38,480
und da kann man ja mal die 
richtigen Fragen stellen, welche

1077
00:50:38,480 --> 00:50:40,240
da da so ist ja ein bisschen die
Idee. 

1078
00:50:40,360 --> 00:50:41,590
Ja, ich wollte. 
Paar Punkte machen. 

1079
00:50:41,590 --> 00:50:43,110
Ich glaub die sind 
durchgekommen, also dass man, 

1080
00:50:43,110 --> 00:50:45,270
dass man Development gleich 
mitdenkt, wenn man production 

1081
00:50:45,270 --> 00:50:48,790
macht, dass man bei Development 
diese File Mounts nimmt und so 

1082
00:50:48,790 --> 00:50:51,190
weiter einen Tipp hab ich noch 
für alle die React mal im 

1083
00:50:51,190 --> 00:50:53,430
Container ausführen wollen, das 
ist tatsächlich muss man sich 

1084
00:50:53,430 --> 00:50:55,030
echt die Handschuhe an die Ärmel
hochkrempeln. 

1085
00:50:55,670 --> 00:50:57,310
Einen Tipp habe ich noch, den 
habe ich noch nicht genannt. 

1086
00:50:57,310 --> 00:51:01,470
Das ist ein Insider. 
Wenn ich environment Variablen 

1087
00:51:01,470 --> 00:51:04,910
die ich brauche oft auch im 
React einsetzen will im 

1088
00:51:04,910 --> 00:51:08,750
Container, dann muss ich sie in 
der Bauzeit reingeben. 

1089
00:51:08,750 --> 00:51:12,030
Ja, weil React ist ja ne ne ne 
Spa, also eine Single Page 

1090
00:51:12,030 --> 00:51:14,590
Application, die zieht sich ja 
nicht irgendwo her da noch 

1091
00:51:14,590 --> 00:51:17,070
irgendwelche Environment 
Variablen, das heißt ich muss 

1092
00:51:17,070 --> 00:51:19,470
zur Bauzeit die drinne haben, 
das ist aber nicht so einfach 

1093
00:51:19,470 --> 00:51:21,550
beim Container hier muss ich mit
den Arguments spielen. 

1094
00:51:22,600 --> 00:51:25,720
Es gibt sogenannte Arguments im 
Dockerfile und die Arguments 

1095
00:51:25,720 --> 00:51:27,640
beschicke ich quasi vom Docker 
compose. 

1096
00:51:28,240 --> 00:51:30,640
Da setze ich dann die 
Environment in die Arguments und

1097
00:51:30,640 --> 00:51:33,440
die in den Docker file werden 
die Arguments im Environment 

1098
00:51:33,440 --> 00:51:35,480
Variablen umgedichtet, die 
müssen alle mit React 

1099
00:51:35,480 --> 00:51:38,920
unterstrich App anfangen, damit 
das funktioniert und dann kann 

1100
00:51:38,920 --> 00:51:42,400
ich quasi auch sogar ziemlich 
nice irgendwie über diese Docker

1101
00:51:42,400 --> 00:51:45,560
compost als zentrale 
Konfigurationsschnittstelle auch

1102
00:51:45,560 --> 00:51:48,880
die Environment Variablen in 
mein Frontend bringen jetzt, das

1103
00:51:48,880 --> 00:51:52,440
war jetzt mit 3 Fragezeichen. 
Aber alle, die es schon mal 

1104
00:51:52,440 --> 00:51:53,840
versucht haben, haben vielleicht
jetzt eine Idee. 

1105
00:51:53,840 --> 00:51:56,160
Ja, genau, und ich glaube also 
Podcasts, ich weiß nicht, ist 

1106
00:51:56,160 --> 00:51:58,510
ein bisschen schwierig. 
Auszudrücken ich werd, ich werd 

1107
00:51:58,510 --> 00:52:00,070
mal versuchen wird es nicht 
versprechen. 

1108
00:52:00,070 --> 00:52:02,470
Ich werd mal versuchen noch mal 
n Artikel zu schreiben mit den 

1109
00:52:02,950 --> 00:52:06,590
mit den Key Learnings quasi die 
ich hatte um sowas zu 

1110
00:52:06,590 --> 00:52:09,070
realisieren ne also ich. 
Find es ziemlich beeindruckend, 

1111
00:52:09,070 --> 00:52:10,750
wie das alles runterbeten 
kannst. 

1112
00:52:10,750 --> 00:52:12,430
Die ganze Geschichte also. 
Ich muss das ja jeden Tag 

1113
00:52:12,430 --> 00:52:16,150
machen. 
My daily Brad and Butter. 

1114
00:52:16,150 --> 00:52:20,030
Das Stocker Compose Yammel das 
wird auch immer wieder 

1115
00:52:20,030 --> 00:52:22,190
angefasst. 
Oder ist es irgendwann mal 

1116
00:52:22,190 --> 00:52:23,590
fertig? 
Auch wenn du ne Anwendung 

1117
00:52:23,590 --> 00:52:25,950
weiterentwickelst? 
Nee, das ist eigentlich dann mal

1118
00:52:25,950 --> 00:52:27,950
fertig. 
Ja, das fasst man dann nicht 

1119
00:52:27,950 --> 00:52:29,510
mehr so oft an. 
Ja, also es sei denn, du machst 

1120
00:52:29,510 --> 00:52:31,310
einen komplett neuen 
Microservice dazu, eigentlich 

1121
00:52:31,310 --> 00:52:33,990
ist das dann mal fertig, aber 
man muss erstmal das initial 

1122
00:52:33,990 --> 00:52:37,070
alles ein bisschen aufsetzen und
so weiter ich fasse das nicht so

1123
00:52:37,070 --> 00:52:38,990
oft an, ich habe es das letzte 
Mal angefasst, als wir quasi 

1124
00:52:38,990 --> 00:52:40,350
auch noch mal unsere Cloud 
Strategie. 

1125
00:52:41,400 --> 00:52:44,320
Verändert haben und so weiter 
aber genau und dann kann man 

1126
00:52:44,320 --> 00:52:46,240
auch das Ganze, was ich jetzt 
alles weggelassen habe, diesen 

1127
00:52:46,240 --> 00:52:49,560
ganzen dev ops. 
Also Leute wir machen auch Deap 

1128
00:52:49,560 --> 00:52:52,600
Ops so, man muss das nicht alles
per Hand antippen und so weiter 

1129
00:52:52,600 --> 00:52:56,880
dann kann man das natürlich noch
in diese Cicd, das greift dann 

1130
00:52:56,880 --> 00:52:59,000
da rein, wenn ich das jetzt 
sage, also dieses Docker compose

1131
00:52:59,000 --> 00:53:02,760
jammel ja und das Verarbeiten 
dieses Docker compose Yamml und 

1132
00:53:02,760 --> 00:53:04,840
was ich gesagt habe, da kannst 
du mal, dann musst du halt quasi

1133
00:53:04,840 --> 00:53:06,560
aufrufen Docker compose Build 
und so weiter. 

1134
00:53:07,640 --> 00:53:09,360
Nur um das aber auch noch mal zu
sagen, das sind die typischen 

1135
00:53:09,360 --> 00:53:11,200
Schritte, die ich in sowas wie 
ICD Pipeline mache. 

1136
00:53:11,200 --> 00:53:13,600
Das passiert dann automatisch. 
Ja, also ich habe gerade. 

1137
00:53:13,790 --> 00:53:15,270
Code gemacht. 
Ich hab rum editiert, hab das 

1138
00:53:15,270 --> 00:53:18,430
getestet, die Developer dann 
sagen die OK fein cool getestet 

1139
00:53:18,670 --> 00:53:22,070
ich will das Releasen, dann gibt
es n im Repository Tag und dann 

1140
00:53:22,070 --> 00:53:25,150
kommt so ne CICD Event 
angelatscht und dann macht das 

1141
00:53:25,150 --> 00:53:28,310
das quasi alles so ja aber wenn 
ich mit Docker compose arbeite 

1142
00:53:28,310 --> 00:53:30,310
dann wird genau das passieren 
was ich heute so zum Teil 

1143
00:53:30,310 --> 00:53:34,510
irgendwie erzählt hab, dann wird
das ausgerollt und das schicke 

1144
00:53:34,510 --> 00:53:37,950
ist, dass tatsächlich und das 
ist wirklich schick ja also wenn

1145
00:53:37,950 --> 00:53:41,280
du jetzt nen Server mit 
reinnehmen willst, neue 

1146
00:53:41,280 --> 00:53:43,920
Hardware, dann brauchst du echt 
nur nen Vanilla Server holen, 

1147
00:53:44,160 --> 00:53:46,600
der muss nichts anderes können 
als Docker und das können die 

1148
00:53:46,600 --> 00:53:50,040
fast alle Easy Docker hast du 
schnell installiert und dann 

1149
00:53:50,040 --> 00:53:52,840
klatscht du einfach dein 
fertiges Production Docker 

1150
00:53:52,840 --> 00:53:55,880
compose drauf, da ist alles drin
was du brauchst. 

1151
00:53:55,960 --> 00:53:59,840
Dann sagst du nur noch da Docker
compose ab und dann ist ja dann 

1152
00:53:59,840 --> 00:54:02,560
ist der Lack fertig so dann 
kommt das hoch und dann ist die 

1153
00:54:02,560 --> 00:54:05,240
Installation fertig und das 
funktioniert halt überall ob das

1154
00:54:05,240 --> 00:54:07,720
ein Webserver ist oder ob sie 
dann sogar Orden Brand gehst das

1155
00:54:07,720 --> 00:54:09,280
ist das coole das sag ich jetzt 
auch noch mal. 

1156
00:54:10,360 --> 00:54:12,080
Diese Architektur Entscheidung, 
dass wir quasi auch nicht 

1157
00:54:12,080 --> 00:54:15,270
Services nehmen aus der Cloud. 
Die führt dazu, dass unser 

1158
00:54:15,270 --> 00:54:17,550
Server quasi egal ist, ob der in
der Cloud ist oder nicht. 

1159
00:54:17,550 --> 00:54:19,630
Ja, es kann halt auch n Server 
beim Kunden sein und premist 

1160
00:54:19,630 --> 00:54:22,830
funktioniert es halt auch, ja. 
Da hast du vielleicht am Anfang 

1161
00:54:22,830 --> 00:54:24,270
gefragt, da ist das viel mehr 
Aufwand. 

1162
00:54:24,270 --> 00:54:25,670
Ja, ist gar nicht so viel mehr 
Aufwand. 

1163
00:54:25,670 --> 00:54:27,910
Du musst n paar Sachen mehr 
mitdenken, aber das kaufst du 

1164
00:54:27,910 --> 00:54:30,950
dir natürlich dann ein, ne, dass
du bist du on premise unterwegs 

1165
00:54:30,950 --> 00:54:33,870
ja ansonsten wenn du das wenn du
das willst musst du da quasi 

1166
00:54:33,870 --> 00:54:35,910
schwer schuften, dass du dich 
dann rauslöst aus diesen. 

1167
00:54:36,790 --> 00:54:40,310
Und du hast ja keine Google 
Database on premise. 

1168
00:54:40,550 --> 00:54:44,430
Du bist auch deutlich günstiger 
unterwegs mit deinen Cost of 

1169
00:54:44,430 --> 00:54:47,110
Revenuews würde man sagen. 
Also jeder hat zusätzliche 

1170
00:54:47,110 --> 00:54:50,630
Account, ist günstiger bei uns 
als wenn wir jetzt alles bei 

1171
00:54:50,630 --> 00:54:54,190
Amazon hätten oder bei bei 
Google oder oder Microsoft 

1172
00:54:54,190 --> 00:54:55,470
entsprechen. 
Das ist richtig, weil wir im 

1173
00:54:55,470 --> 00:54:57,670
Prinzip nur einen Server 
brauchen, und den gibt es 

1174
00:54:57,670 --> 00:55:01,230
virtualisiert mit in allen 
möglichen Fassungen. 

1175
00:55:01,350 --> 00:55:03,840
Aber. 
Bei uns reicht so ein Standard 8

1176
00:55:03,840 --> 00:55:07,960
Gigabyte RAM was weiß ich 2 
Kerne oder 4 Kerne Intel und da 

1177
00:55:07,960 --> 00:55:11,080
zahlst du unter 10€ für einen 
Server pro Monat, das ist echt 

1178
00:55:11,080 --> 00:55:13,640
günstig, so kannst du schon 
richtig was mit abfrühstücken, 

1179
00:55:13,640 --> 00:55:16,000
wenn du dann wenn du dann halt 
wirklich die Container schmal 

1180
00:55:16,000 --> 00:55:17,520
machst, dann muss man halt 
darauf achten, dass du schon 

1181
00:55:17,520 --> 00:55:19,720
optimieren, dass die nicht so 
viel Memory nehmen und nicht so 

1182
00:55:19,720 --> 00:55:22,640
viel CPU, da kommt es ja lange 
hin mit so einem Server, der 

1183
00:55:22,640 --> 00:55:24,800
macht ja sonst nichts außer den 
Container zu laufen, die sind ja

1184
00:55:24,800 --> 00:55:27,680
auch wieder hoch optimiert das. 
Ist wirklich. 

1185
00:55:27,680 --> 00:55:29,080
Tatsächlich sparst du da auch 
einen Euro? 

1186
00:55:29,080 --> 00:55:32,000
Das ist so, also hat also Cloud 
Infrastruktur auch direkt was 

1187
00:55:32,000 --> 00:55:33,840
mit deinem Revenue zu tun. 
Zumindest mit der Marge. 

1188
00:55:33,840 --> 00:55:36,000
Ja, ja. 
Genau das stimmt. 

1189
00:55:37,790 --> 00:55:41,190
Alles klar? 
OK, dann fällt dir gerade noch n

1190
00:55:41,190 --> 00:55:42,910
Tipp ein. 
Nee, ich glaub ich hab auch 

1191
00:55:42,910 --> 00:55:45,590
schon n schlechtes Gewissen mit.
Läuft, dann hört man schon auf 

1192
00:55:45,590 --> 00:55:47,750
vor dem Neuen einfällt mal. 
Gucken, wer noch so jetzt noch 

1193
00:55:47,750 --> 00:55:50,750
so zuhört, so aber das ja, ich 
hab es, ich hoffe es hat euch 

1194
00:55:50,750 --> 00:55:52,790
trotzdem n bisschen 
weitergeholfen, mal n bisschen 

1195
00:55:52,790 --> 00:55:55,030
bisschen deeper inside so, ja 
vielleicht ein bisschen mehr für

1196
00:55:55,030 --> 00:55:56,550
die Developers heute, aber genau
das. 

1197
00:55:57,150 --> 00:55:59,710
Sind schon ein paar Leute dabei,
bin ich sicher alles klar. 

1198
00:55:59,710 --> 00:56:02,790
Burkhardt, ich danke dir und ich
danke euch fürs Zuhören und wir 

1199
00:56:02,790 --> 00:56:05,070
hören uns dann in 2 Wochen bis 
dann. 

1200
00:56:05,070 --> 00:56:06,630
Alles klar, hat die, die noch 
dabei sind. 

1201
00:56:06,630 --> 00:56:10,480
Tschüss aus Hamburg. 
Einfach komplex wird präsentiert

1202
00:56:10,480 --> 00:56:13,120
und produziert von Highsomware. 
Wir freuen uns auf deine Fragen 

1203
00:56:13,120 --> 00:56:15,760
und 
deinfeedbackanpodcast@heiseweb.com

1204
00:56:15,920 --> 00:56:18,480
vielen Dank fürs Hören dieser 
Folge bis Dienstag in 2 Wochen 

1205
00:56:18,480 --> 00:56:19,320
und Tschüss aus Hamburg.
