Skip to content

Tag 21Docker

Teresakoetter edited this page Apr 4, 2023 · 3 revisions

Docker

Was und warum:

  • Plattform um Apps in definierter Umgebung laufen zu lassen (Container)
  • Container wird aus Vorlage erstellt (Image)
  • Container wird auf Plattform ausgeführt
Screenshot 2023-04-03 at 12 35 03

Docker ist eine Open-Source-Plattform, die es Entwicklern ermöglicht, Anwendungen in Containern auszuführen, die unabhängig von der zugrunde liegenden Infrastruktur sind.

Ein Container ist ein standardisiertes Softwarepaket, das alle erforderlichen Komponenten enthält, um eine Anwendung auszuführen, einschließlich des Codes, der Laufzeitumgebung, der Bibliotheken und anderer Abhängigkeiten.

Mit Docker können Entwickler Anwendungen in Container verpacken und bereitstellen, die auf jeder Plattform oder jedem Rechner ausgeführt werden können, der Docker unterstützt, ohne dass sie sich um die spezifische Umgebung kümmern müssen.

Wo herunterladen:

Link: https://www.docker.com/ (Achtung: Apple Chip auswählen)

Wie steuern:

Via Benutzungsoberfläche, oder via Terminalbefehle.

Die wichtigsten Terminalbefehle:

  • docker run: Startet einen Docker-Container aus einem Image.
  • docker pull: Lädt ein Docker-Image aus einem öffentlichen oder privaten Repository herunter.
  • docker ps: Zeigt eine Liste aller aktiven Docker-Container auf dem System an.
  • docker stop: Stoppt einen laufenden Docker-Container.
  • docker rm: Löscht einen Docker-Container.
  • docker images: Zeigt eine Liste aller auf dem System vorhandenen Docker-Images an.
  • docker build: Erstellt ein Docker-Image aus einem Dockerfile.

Wie einrichten:

Um das Programm in Docker laufen lassen zu können, müssen wir ein Docker Image erstellen. Dazu bauen wir das gesamte Projekt in eine Datei. Frontend bauen: In package.jsn Datei play-Symbol bei "build" klicken /frontend/build/ nach /backend/src/main/ressources/static/ kopieren:** In backend/src/main/ressources neuen Ordner "static" erstellen Gesamten Inhalt des build Ordners im Frontend in den og. Ordner im Backend kopieren Backend bauen: Erst "clean", dann "package" --> erstellt neue JAR Datei, welche jetzt Backend und Frontend beinhaltet Docker Image bauen: Dockerfile im Hauptverzeichnis erstellen (new file - "Dockerfile") -> ist eine Art Gebrauchsanweisung:

-> Jetzt kann Programm gestartet werden. Dazu auf Docker Name und Port bestimmen.

Screenshot 2023-04-03 at 15 34 17

Dateiname der JAR kann (wie im Screenshot oben) der Einfachkeit halber umbenannt werden (hier in "app").

Dazu im der pom.xml den Namen app einfügen im build Bereich:

<build> <finalName>app</finalName> </build>

Fly

nächster Schritt: veröffentlichen der App im Internet (App an einen Cloud-Anbieter schicken und sie auf deren Servern laufen lassen)

-> mit dem Cloud-Anbieter Fly.io lassen sich Apps mit dem erstellten Dockerfile in wenigen Schritten deployen:

  • kostenlos für bis zu drei Projekte, nicht so leistungsfähig wie die kostenpflichtigen Anbieter, aber für kleinere Projekte ausreichend
  • auf fly.io einen Account anlegen (hierzu wird eine Kreditkarte benötigt)
  • Dashboard: hier findet man alle Informationen und verschiedene Funktionen
  • auf "Launch an App" klicken
  • wählen, welche App erstellt werden soll: Docker-App
  • man wird weitergeleitet zur entsprechenden Anleitung: Deploy via Dockerfile

Installation Homebrew und Flyctl

  • um die CLI-Befehle von fly nutzen zu können, muss zunächst 'Homebrew' installiert werden
  • hierzu den entsprechenden Code von der Homebrew-Page kopieren und im Terminal laufen lassen
  • man kann ganz einfach checken, ob es installiert ist, indem man 'brew' einmal ins Teminal eingibt; ist es installiert werden verschiedene brew-CLI-Befehle im Terminal vorgeschlagen, wie man es nutzen kann
  • bei Fehlermeldungen bei der Installation werden im Terminal Befehle angezeigt, um den Fehler zu beheben
  • flyctl installieren über brew: * brew install flyctl
  • bei Problemen evtl. Terminal nochmal neu starten und auf Vorschläge im Terminal achten

Deploy via Dockerfile

  • in intellij das Termnial öffnen (dann ist man gleich im richtigen Ordner-Verzeichnis)
  • einloggen mit: * fly login (oder: flyctl auth login)
  • zur Veröffentlichung einer neuen App: * fly launch
  • Dockerfile sollte dann direkt gefunden werden ('Detected a Dockerfile App')
  • eindeutigen App-Namen festlegen (muss eindeutig sein, da später URL auch so heißt)
  • Server-Standort wählen (irgendwas in der Nähe): z. B. Amsterdam (Achtung: Frankfurt nicht kostenlos!)
  • die nächsten drei Abfragen mit 'nein' beantworten

Screenshot 2023-04-04 at 1 53 18 AM

  • veröffentlichen mit 'ja' bestätigen

  • es wird nun automatisch Image und Container erstellt und hochgeladen (kann einige Minuten dauern)

  • wenn alles geklappt hat, erscheint die Meldung 'deployed successfully'

  • App jetzt auf dem Dashboard (bei fly.io) sichtbar

  • unter Hostname findet man die URL, über diese kann die App nun im Internet angezeigt werden

  • nachträgliche Namensänderungen sind nicht möglich (dann löschen und neu erstellen)

  • andere Cloud-Anbieter: z. B. AWS, Google, sind allerdings nicht kostenlos

Clone this wiki locally