Wir haben die besten Kunststoffe von Dockerfile extrahiert!

Einführung

Dieses Mal werde ich nach dem vorherigen die grundlegende Schreibmethode von Docker vorstellen.

Es wurde aus den ursprünglichen ** Best Practices zum Schreiben von Dockerfiles ** extrahiert.

Wenn Sie das Video überprüfen möchten, klicken Sie bitte hier. [YouTube Video] Einführung in die Best Practices von Dockerfile! Wie viele kannst du machen? Collation

Verwenden Sie .dockerignore

Sie können Dateien wie .gitignore festlegen, die Sie dem Container nicht hinzufügen möchten.

# .dockerignore
*/tmp

1 Prozess pro Container

Starten Sie Rails, MySQL, Nginx usw. nicht in einem Container (Dockerfile). Es wird schwierig sein, die Version zu aktualisieren, und es wird schwierig sein, die Ursache zu isolieren.

Minimieren Sie die Anzahl der Ebenen

Jedes Mal, wenn Docker RUN, ADD, COPY ausführt, wird vorübergehend ein Image erstellt. Dies wirkt sich auch auf die Lesbarkeit der Docker-Datei aus. Versuchen Sie daher, sie nicht so weit wie möglich zu teilen.

Verwenden Sie einen mehrstufigen Build

Nennen Sie es mit der AS-Klausel in FROM wie folgt. Sie können das Zwischenbild entfernen, indem Sie beim Neuerstellen einer neuen Ebene angeben, was Sie benannt haben.

In diesem Beispiel wird Go verwendet, aber auch Node scheint nützlich zu sein.

FROM golang:1.11-alpine AS build

####Paket Einführung&Bauen####
RUN apk add --no-cache git
RUN go get github.com/golang/dep/cmd/dep

COPY Gopkg.lock Gopkg.toml /go/src/project/
WORKDIR /go/src/project/
RUN dep ensure -vendor-only

COPY . /go/src/project/
RUN go build -o /bin/project
####Ende des Builds####

#Erstellen Sie eine neue Ebene
FROM scratch
COPY --from=build /bin/project /bin/project
ENTRYPOINT ["/bin/project"]
CMD ["--help"]

Argumente sind angebracht!

Das Anordnen der Argumente in alphabetischer Reihenfolge verbessert die Lesbarkeit.

RUN apt-get update && apt-get install -y bzr cvs git

Mit alpinem Bild aufhellen

Sie können das Alpenbild verwenden, um die Kapazität zu reduzieren (5 m oder weniger). Alpine ist übrigens ein Bild von BusyBox plus Paketmanager apk. Da die Belastung des Host-Betriebssystems verringert werden kann, kann dies in einer Entwicklungsumgebung sinnvoll sein.

Nicht aktualisieren

Wenn Sie ein Upgrade durchführen, aktualisieren Sie die Basis-Image-Version.

Verwenden Sie COPY over ADD

ADD ist ein vielseitiger Befehl, der sich unerwartet verhalten kann. Wenn Sie Dateien vom Host-Betriebssystem auf das Gast-Betriebssystem verschieben möchten, verwenden Sie COPY.

Verwenden Sie keinen Root-Benutzer

Es ist nicht sehr gut für die Sicherheit, daher ist es besser, USER hinzuzufügen.

Zusammenfassung

Dieses Mal habe ich vorgestellt, wie man eine Docker-Datei schreibt. Ich werde die spezifische Schreibmethode und Verwendung in einem anderen Artikel vorstellen!

Kommentare zu twitter und youtube sind ebenfalls willkommen!

Nachtrag

Für weitere Informationen lesen Sie die Übersetzung von @zembutsu! Best Practice zum Schreiben von Dockerfile

Recommended Posts

Wir haben die besten Kunststoffe von Dockerfile extrahiert!
Bingo-Beurteilungsprogramm
Wir haben die besten Kunststoffe von Dockerfile extrahiert!
Beurteilung des Kalenders
[Rails] Wir haben die Speicherorte und die Verwendung von Entwickler- und Benutzerimages zusammengefasst.
Eine Geschichte darüber, wie eine vorhandene Docker-Datei mit der GPU kompatibel gemacht werden kann
Die Geschichte des Hinzufügens der neuesten Node.js zu DockerFile
Wir haben verschiedene Implementierungsmethoden von Singleton gesammelt.