Docker ENV im Blog der J&J Ideenschmiede

von

Docker .env


Wie kann man in Docker environment variables setzen und diese in seinem Projekt auslesen? Wir werden dies an einem GO Lang Beispiel durchgehen.

Dafür erstellen wir erstmal ein Dockerfile. In diesem definieren wir Eigenschaften zu unserem GO Lang Projekt und wie mit diesen umgegangen werden soll. Zum Beispiel wird das Verzeichnis für die APP angegeben, oder das alle genutzten Libraries heruntergeladen werden müssen.

Unter anderem können wir aber auch environment variables definieren, die wir dann in unserem Projekt auslesen. So kann man einen Service bauen, der eventuell für verschiedenste Kunden genutzt werden soll. Das heißt man kann darüber die Datenbank Verbindung überprüfen oder ersetzten oder die hinterlegten SMTP Server anpassen ohne dies in einer lokalen .env Datei machen zu müssen und das Image immer neu erstellen zu lassen.

In unserem Beispiel sieht unser Dockerfile wie folgt aus:

FROM golang:latest
# Hier erstellen wir unsere environment variables
ENV USERNAME J&J Ideenschmiede UG
COPY . /go/src/app
WORKDIR /go/src/app
RUN go get ./
RUN go build -o app
CMD ./app
EXPOSE 80

Unser dazugehöriger GO Code ist jetzt sehr sehr schlicht aufgebaut. Wir geben für Sie nur die environment variable aus dem Dockerfile aus. Dem entsprechend finden Sie in unserem GO Code nur den Aufruf os.Getenv(„USERNAME“), der in einer Ausgabe definiert ist. Dies sieht dann wie folgt aus:

package main
import (
	"fmt"
	"os"
)
func main() {
	fmt.Println(os.Getenv("USERNAME"))
}
Docker env Anlage auf einem Linux Server

Wenn wir uns nun das Konsolenprotokoll des Docker Containers ansehen, dann sehen wir, dass unser Docker Code eine direkte Ausgabe unserer environment variable vornimmt.

Konsolenprotokoll Docker env

Mit dieser Methode kann man environment variables für z.B.: ein Backend setzen welches universal einsetzbar ist und eventuell auch für mehrere Projekte genutzt werden kann. So sparen Sie sich das anlegen von mehreren fast identischen Codebases in Ihrer Entwicklungsumgebung.

Pfeil links

zur vorherigen Seite zurückkehren