class Dockerfile extends Alvine

Dockerfile

Sammelklasse für alle Einstelungen eines zu bauenden Images. Diese Klasse legt im temporäreren Verzeichnis ein tar-Archiv an. In das Archive werden alle mittels addFile übergebene Dateien integriert.

$df = new \Alvine\Infrastructure\Docker\Build\Dockerfile('ubuntu');
$df->setMaintainer('[email protected]');

// Dockerfile ausgeben
echo (string) $df;

// Archive mit Dateien holen
$df->getArchive();

Constants

UBUNTU

Ubuntu

DEBIAN

DEBIAN (minimales System)

COPY

COPY

ADD

ADD

RUN

RUN

EXPOSE

EXPOSE (Port)

USER

USER

CMD

CMD

ENVIRONMENT

Environment

ENTRYPOINT

ENTRYPOINT

Startpunkt des Containers z.B. ENTRYPOINT echo “Hello World”

MAINTAINER

MAINTAINER

VOLUME

VOLUME

ONBUILD

ONBUILD

WORKDIR

WORKDIR

LEVEL_DEFAULT

Standard-Stufe für die Ausführung

LEVEL_ADDFILE

Stufe bei denen Dateien eingefügt werden

LEVEL_CONTENT

Stufe bei denen externe Daten eingefügt werden

LEVEL_INSTALL

Nach dem Hinzufügen von Paketen und Content Scripte ausführen

LEVEL_CLEANUP

Stufe bei denen der Inhalt aufgeräumt wird

LEVEL_PACKAGES

Level bei denen Linux Pakete installiert werden

LEVEL_PACKAGES_OFFSET

Offset je Paket

Properties

protected array $archive
protected string $from
protected string $maintainer
protected array $instruction
protected string $entrypoint
protected string $command
protected SimpleMap $environmant
protected string $user
protected array $volume
protected InstructionSet $instructionSet

Methods

__construct(RepoTag $repoTag = null, InstructionSet $instructionSet = null)

Neues Dockerfile

setEnvironment(string $key, string $value)

Setzt eine Umgebungsvariable

setCommand(string|array $cmd)

Setzt dden Befehl

addVolume(string $volume)

Fügt einen neuen Pfad hinzu

addInstruction(string $cmd, integer $level)

Hinzufügen einer Anweisung

addRun(string $cmd, integer $level = self::LEVEL_DEFAULT)

Übergibt ein Programm das beim Bauen ausgeführt werden soll.

addWorkdir(string $path, integer $level = self::LEVEL_DEFAULT)

Arbeitsverzeichnis im Image setzen

addOnbuild(string $command, integer $level = self::LEVEL_DEFAULT)

Trigger für build setzen

setEntrypoint(string|array $entrypoint, string $user = null)

Setzt den Einstiegspunkt

setUser(string $user)

User

addExpose(integer $port, integer $level = self::LEVEL_DEFAULT)

Port freigeben

addFile(File $file, string $target, integer $level = self::LEVEL_ADDFILE)

Fügt Datei hinzu

addFileFromString(string $content, string $target, integer $level = self::LEVEL_CONTENT)

Fügt Datei hinzu

addURL(URI $url, string $target, integer $level = self::LEVEL_CONTENT)

Bindet den Inhalt einer entfernetn Datei ein. Der Inhalt der Datei kann ein Archive (tar) sein.

addDirectory(Directory $directory, string $target, integer $level = self::LEVEL_CONTENT)

Verzeichnis übertragen

setMaintainer(string $maintainer)

Verantwortlicher

string
getArchive()

Archive

string
__toString()

Dockerfile

static Dockerfile
getInstanceFromDockerfile(File $dockerfilePath)

Neue Dockerfileinstanz

static Dockerfile
handleEnv(Dockerfile $dockerfile, string $argument, string $expArg)

ENV-Anweisung bearbeiten

static Dockerfile
handleAddAndCopy(Dockerfile $dockerfile, File $dockerfilePath, $argument, $expArg)

Add- und Copy-Anweisung bearbeiten

addPackage(Package $package)

Paket hinzufügen

addPackages(Collection $packages)

Pakete hinzufügen

Details

at line 221
__construct(RepoTag $repoTag = null, InstructionSet $instructionSet = null)

Neues Dockerfile

Parameters

RepoTag $repoTag Image
InstructionSet $instructionSet Anweisungen

at line 247
Dockerfile setEnvironment(string $key, string $value)

Setzt eine Umgebungsvariable

Parameters

string $key Umgebungsvariable
string $value Wert

Return Value

Dockerfile

at line 275
Dockerfile setCommand(string|array $cmd)

Setzt dden Befehl

Der Befehl muss im Format ["echo", "Whale you be my container"] übergeben werden. Wird ein Array übergeben, so wandelt die Methode das Argument entsprechend um.

$array = ['echo','Hello'];   // like an exec, preferred form
Dockerfile::setCommand($array);

$array = ['param1','param2']; // as default parameters to ENTRYPOINT
Dockerfile::setCommand($array);

$command = 'ls -lah'; // (as a shell command)
Dockerfile::setCommand($command);

Parameters

string|array $cmd Kommando

Return Value

Dockerfile

at line 298
Dockerfile addVolume(string $volume)

Fügt einen neuen Pfad hinzu

Parameters

string $volume Pfad (Unix-Schreibweise mit / )

Return Value

Dockerfile

at line 316
protected Dockerfile addInstruction(string $cmd, integer $level)

Hinzufügen einer Anweisung

Über den Level lassen sich Befehle in verschiedene Bereiche gruppieren. Die Levels werden vom kleinsten zum größeren Wert ausgeführt.

Parameters

string $cmd Befehl
integer $level Level

Return Value

Dockerfile

at line 332
Dockerfile addRun(string $cmd, integer $level = self::LEVEL_DEFAULT)

Übergibt ein Programm das beim Bauen ausgeführt werden soll.

Parameters

string $cmd Programm das ausgeführt werden soll
integer $level Zeitpunkt der Ausführung

Return Value

Dockerfile

at line 345
Dockerfile addWorkdir(string $path, integer $level = self::LEVEL_DEFAULT)

Arbeitsverzeichnis im Image setzen

Parameters

string $path Arbeitsverzeichnis im Image
integer $level Zeitpunkt der Ausführung

Return Value

Dockerfile

at line 357
Dockerfile addOnbuild(string $command, integer $level = self::LEVEL_DEFAULT)

Trigger für build setzen

Parameters

string $command Trigger
integer $level Zeitpunkt der Ausführung

Return Value

Dockerfile

at line 379
Dockerfile setEntrypoint(string|array $entrypoint, string $user = null)

Setzt den Einstiegspunkt

Der Einstiegspunkt muss im Format ["echo", "Whale you be my container"] übergeben werden. Wird ein Array übergeben, so wandelt die Methode das Argument entsprechend um.

$array = ['echo','Hello'];
Dockerfile::setEntrypoint($array);

Parameters

string|array $entrypoint Einstiegspunkt
string $user Benutzer

Return Value

Dockerfile

at line 403
Dockerfile setUser(string $user)

User

Parameters

string $user User

Return Value

Dockerfile

at line 416
Dockerfile addExpose(integer $port, integer $level = self::LEVEL_DEFAULT)

Port freigeben

Parameters

integer $port Freizugebener Port
integer $level Zeitpunkt der Ausführung

Return Value

Dockerfile

at line 429
Dockerfile addFile(File $file, string $target, integer $level = self::LEVEL_ADDFILE)

Fügt Datei hinzu

Parameters

File $file Datei die hinzugefügt werden soll
string $target Zielpfad
integer $level Zeitpunkt der Ausführung

Return Value

Dockerfile

at line 443
Dockerfile addFileFromString(string $content, string $target, integer $level = self::LEVEL_CONTENT)

Fügt Datei hinzu

Parameters

string $content Datei die hinzugefügt werden soll
string $target Zielpfad
integer $level Zeitpunkt der Ausführung

Return Value

Dockerfile

at line 460
Dockerfile addURL(URI $url, string $target, integer $level = self::LEVEL_CONTENT)

Bindet den Inhalt einer entfernetn Datei ein. Der Inhalt der Datei kann ein Archive (tar) sein.

Parameters

URI $url URL auf die Datei
string $target Zielpfad
integer $level Zeitpunkt der Ausführung

Return Value

Dockerfile

at line 473
Dockerfile addDirectory(Directory $directory, string $target, integer $level = self::LEVEL_CONTENT)

Verzeichnis übertragen

Parameters

Directory $directory lokales Verzeichnis
string $target Ziel-Verzeichnis
integer $level Zeitpunkt der Ausführung

Return Value

Dockerfile

at line 502
setMaintainer(string $maintainer)

Verantwortlicher

Hans Mustermann, [email protected]

Parameters

string $maintainer Verantwortlicher für die Datei

at line 515
string getArchive()

Archive

Diese Methode gibt das Dockerfile und alle Dateien als tar-Archive zurück

Return Value

string Zeichenkette mit gepacktem TAR-Archive. (.tar.gz)

at line 547
string __toString()

Dockerfile

Diese Methode gibt das über die Klasse definiert Dockerfile als Text zurück. in dieser Form kann es gespeichert und dem docker-Client mittels build übergeben werden.

Return Value

string Dockerfile

at line 613
static Dockerfile getInstanceFromDockerfile(File $dockerfilePath)

Neue Dockerfileinstanz

Hinweis: Die Methode unterstützt keine mehrfach Dockerfiles. In jeder Datei darf nur ein FROM enthalten sein.

Parameters

File $dockerfilePath Dateiname

Return Value

Dockerfile

Exceptions

DockerfileParseException
UnsupportedInstructionException

at line 703
static protected Dockerfile handleEnv(Dockerfile $dockerfile, string $argument, string $expArg)

ENV-Anweisung bearbeiten

Parameters

Dockerfile $dockerfile Dockerfile
string $argument Argumente
string $expArg Expetiondaten

Return Value

Dockerfile

Exceptions

DockerfileParseException

at line 750
static protected Dockerfile handleAddAndCopy(Dockerfile $dockerfile, File $dockerfilePath, $argument, $expArg)

Add- und Copy-Anweisung bearbeiten

Parameters

Dockerfile $dockerfile
File $dockerfilePath
$argument
$expArg

Return Value

Dockerfile

Exceptions

DockerfileParseException

at line 790
Dockerfile addPackage(Package $package)

Paket hinzufügen

Parameters

Package $package Paket

Return Value

Dockerfile

at line 811
Dockerfile addPackages(Collection $packages)

Pakete hinzufügen

Mehrere Pakete können in einer Collection übergeben werden. Dadurch reduziert sich die Anzahl der RUN Instruktionen innerhalb des Docker-Files. Anders als bei Dockerfile::addPackage()

Parameters

Collection $packages Pakete

Return Value

Dockerfile