Docker für PHP-Entwickler: Grundkenntnisse

               Eine Datei namens „Dockerfile“ (ohne Dateierweiterung) ist eine Datei, die Docker Anweisungen zum Erstellen eines                Docker-Behälter-Bilds gibt.

               Dockerdateien beginnen in der Regel mit dem Befehl „FROM“ (auch Befehlsargument genannt), gefolgt vom Namen des                Basisabbilds.

               Bevor wir uns ein Beispiel für ein Dockerfile ansehen, erwähnen wir Befehle, die typischerweise in einem Dockerfile zu                finden sind.

          Dockerfile-Befehle/Argumente


               #
Kommentare beginnen mit '#'.


               ADD
Kopiert neue Dateien, Verzeichnisse oder URLs von entfernten Dateien in das Dateisystem des Docker-Behälters.


               CMD
Nur einmal in einem Dockerfile erlaubt. Wenn mehrere CMD-Befehle in einem Dockerfile vorkommen, wird das Docker-Bild nur den letzten CMD-Befehl aufrufen. Der CMD-Befehl wird während der „Build“-Zeit nicht ausgeführt.


               COPY
Kopiert Dateien oder Verzeichnisse aus einer Quelle in das Dateisystem des Docker-Behälters.

Beispiel:  COPY readme.txt   /home/kb

               ENTRYPOINT
Ermöglicht die Definition einen Docker-Behälter, der als ausführbare Datei (Beispiele: „Java“, „-jar“, „myapp.jar“) ständig läuft. Hauptsächlich verwendet, um primäre Anwendungsprozesse zu definieren.


               ENV
Setzt Umgebungsvariablen

Beispiel:  ENV CONF_VALUE=app.conf  STACK_SIZE=3  

               EXPOSE
Benachrichtigt den Laufzeit-Docker-Behälter, dass er die angegebenen Netzwerkports zur Laufzeit abhören muss.

Beispiel:  EXPOSE 5050
                EXPOSE 5150 5151

               FROM
Setzt das Basis-Docker-Bild (ubuntu, openjdk:11, alpine usw.)

               LABEL
Fügt Metadaten hinzu (eine nicht ausführbare Anweisung).

               MAINTAINER
Setzt das Autorenfeld des generierten Bildes

               RUN
- Führt Befehle in einer neuen Ebene über dem aktuellen Docker-Bild aus und überträgt die               Ergebnisse.
- Läuft während der „Build“-Zeit.
- Empfehlung: Verwenden Sie ‚&&‘, um Befehle zu trennen:

Beispiel:  RUN apt-get update && update apt-get install –y php

               USER
Legt den Benutzernamen oder die UID fest, der/die beim Ausführen des Docker-Bildes und der Befehle verwendet werden soll.

Beispiel:  USER Kami  

               VOLUME
Erzeugt einen Einhängepunkt (Pfad) zu externen Volumen auf dem eigenen Rechner oder anderen Docker-Behälter.

               WORKDIR
- Legt das Arbeitsverzeichnis für alle nachfolgenden RUN-, CMD-, ENTRYPOINT-, COPY- und          ADD-Befehle fest.
- Wenn es ein relativer Pfad ist, ist er relativ zum vorherigen WORKDIR.

Beispiel:  WORKDIR /home/kbarut  
        ---> WORKDIR foo # ergibt "/home/kbarut/foo"

               ARG
Definiert eine Variable, die Benutzer zum Zeitpunkt der Erstellung an den Builder übergeben können, mit --build-arg

               ONBUILD

Fügt eine Anweisung hinzu, die später ausgeführt wird, wenn das Bild als Grundlage für ein anderes Build verwendet wird.
               STOPSIGNAL

Legt das Systemaufrufsignal fest, das an den Docker-Behälter gesendet wird, um ihn zu verlassen.

              Dockerfile - Beispiel:

                 Wir wollen eine wget-Anwendung mit Dockerfile erstellen.

                 Eine wget-Anwendung wird zum Herunterladen von Dateien verwendet.

                 Wenn die URL einer Webseite eingegeben wird, wird die vollständige Webseitendatei heruntergeladen.

                 (wget ist unter Linux standardmäßig installiert, aber unter Windows müssen wir es selbst installieren.)

                 Schritte:

                 1. Stellt das Docker-Basisbild ein.

                 2. Zieht das leichtgewichtige Betriebssystem Alpine mit apk, dem Paketmanager für Alpine.

                 3. Entfernt apk-cache

                 4. Legt das Arbeitsverzeichnis („working directory“) fest.

                 5. Entfernt apk-cache

                 6. Definiere den Einstiegspunkt.

                 7. Definiere den CMD-Befehl (optional).

FROM alpine

LABEL VERSION=0.1 \
      AUTHOR=KBARUT \
      EMAIL=kamibarut@yahoo.com

RUN apk update \
     && apk add wget \
     && rm -rf /var/cache/apk/*

WORKDIR /root/

ENTRYPOINT [ "get" ]

CMD [ "--help" ]

                 Der nächste Schritt besteht darin, dieses Docker-Bild aus dem Dockerfile mit dem folgenden generischen Befehl zu                  erstellen:

$ docker build -t [username/]< image-name >[:tag] < dockerfile-path >
								

                 In unserem Fall:

$ docker build -t  kbarut/app:latest -f docker/app/Dockerfile docker/app
								

  • kbarut/app: Das Namespace „Docker-Bild“ und ein optionales Tag (Standardwert ist „latest“).
  • docker/app/Dockerfile: Der Speicherort der „Dockerfile“. Nach dem Flag -f „Datei“ platziert.
  • docker/app: Den Kontext, d. h. die Dateien, auf die der Build zugreifen kann.
Kâmi Barut-Wanayo © 2024 - 2025