angle-uparrow-clockwisearrow-counterclockwisearrow-down-uparrow-leftatcalendarcard-listchatcheckenvelopefolderhouseinfo-circlepencilpeoplepersonperson-fillperson-plusphoneplusquestion-circlesearchtagtrashx

Testen der Docker .dockerignore Dateimuster

Verwenden Sie ein Skript, um die Verzeichnisse und Dateien, die in Ihrem Docker image enthalten sein werden, schnell und einfach zu überprüfen.

22 September 2020
In Docker
post main image
https://unsplash.com/@mira09

Dies ist ein kurzer Beitrag über etwas, das ich schon vor langer Zeit machen wollte und für das ich endlich etwas Zeit gefunden habe. Es war nicht wirklich ein Fall von TL;DR (Too Long; habe nicht gelesen), sondern eher so etwas wie TLT;DR (Too Little Time; habe nicht gelesen). Wie Sie wahrscheinlich wissen, wird die Datei Docker .dockerignore verwendet, um zu verhindern, dass bestimmte Dateien und Verzeichnisse in Ihrem Docker image landen. Die Datei Docker .dockerignore wird verwendet, wenn Sie eine Datei Docker image erstellen, und besteht aus Regeln, die auf Dateien und/oder Verzeichnisse passen.

Gründe, dies zu tun:

  • Reduzierung der Größe von Docker image
  • Schnellere Docker image -Builds
  • Vermeidet die Preisgabe von Geheimnissen

Ich hatte bereits eine Datei .dockerignore , aber jetzt suchte ich nach einer einfachen Möglichkeit, zu überprüfen, was in Docker image stehen würde.

Regeln schreiben, Skript ausführen, Dateien prüfen

Ich habe im Internet einen netten Beitrag gefunden und ihn in ein Skript geschrieben. Es verhält sich so, wie wenn Sie Ihr Bild Docker image erstellen, aber jetzt verwendet es das Bild busybox . Es gibt die Liste der Verzeichnisse und Dateien aus, die eingebunden und beendet werden. Sie können diese Dateien überprüfen, und wenn Sie nicht zufrieden sind, bearbeiten Sie die Datei .dockerignore und führen das Skript erneut aus.

Alle Credits an die Jungs auf Stackoverflow, siehe auch die Links unten. Ich habe das Drehbuch 'dockerignore_test.sh' genannt:

#!/bin/sh
#  dockerignore_test.sh

# based on BMitch's answer from:
# How to test dockerignore file?
#  https://stackoverflow.com/questions/38946683/how-to-test-dockerignore-file

# tested on: ubuntu 18.04 lts (desktop)
# with:  Docker  version 19.03.12, build 48a66213fe

# note: will create and delete temporary file "Dockerfile.build-context"

# instructions
#
# 1. put this script in the folder where the image is being built
# make it executable using chmod 755  dockerignore_test.sh
#
# 2. edit this script to change the build-context
# for me the build-context is './project' because 
# my  docker-compose.yaml file has lines:
# if the build-context is the current directory 
# then change this to '.'
# 
#   web:
#     image: ...
#     ...
#     build:
#       context: ./project
#
# 3. edit the  .dockerignore  file and put it in the build-context directory
#
# 4. run script
# ./dockerignore_test.sh
# you should see list of files in build context
# these are the files that end up in your image
#
# 5. (optional) capture the list of files
# ./dockerignore_test.sh  > images_files_list
#
# 6. if you see unwanted files, go back to step 3
#

cat <<EOF >  Dockerfile.build-context
FROM  busybox
COPY . /build-context
WORKDIR /build-context
CMD find .
EOF

docker build -f  Dockerfile.build-context -t build-context ./project
docker run --rm -it build-context

rm  Dockerfile.build-context

Was ist mit den Regeln .dockerignore ?

Viele Leute im Internet beschweren sich darüber, dass die Dokumentation zu Docker in der Datei .dockerignore nicht wirklich hilfreich ist, und auch ich hatte dieses Problem. Am Ende habe ich es einfach gehalten, ich habe einige Verzeichnisse und die .pyc-Dateien ausgeschlossen. Die Verzeichnisse selbst werden nicht entfernt, nur die Dateien und Unterverzeichnisse darin. Die Regel dafür lautet:

**/<directory name>/*

Die doppelten Sternchen am Anfang bedeuten, dass sich das Verzeichnis auf jeder Ebene des Pfades befinden kann. Das Sternchen am Ende bedeutet, dass es mit allem im angegebenen Verzeichnis übereinstimmen wird. Meine .dockerignore -Datei sieht wie folgt aus:

# ./project/.dockerignore
#
# ignore directories
**/.pytest_cache/*
**/alembic/versions/*
**/misc/*
**/static/*
**/tmp/*
**/tests_frontend/*
# ignore files
**/*.pyc

Schlussfolgerung

Die Verwendung der Datei Docker .dockerignore ist beim Erstellen von Docker images unerlässlich. Das vorgestellte Skript ist eine einfache Möglichkeit zu prüfen, welche Dateien in die Datei Docker image aufgenommen werden.

Links / Impressum

Do not ignore .dockerignore (it’s expensive and potentially dangerous)
https://codefresh.io/docker-tutorial/not-ignore-dockerignore-2/

How to test dockerignore file?
https://stackoverflow.com/questions/38946683/how-to-test-dockerignore-file

Einen Kommentar hinterlassen

Kommentieren Sie anonym oder melden Sie sich zum Kommentieren an.

Kommentare

Eine Antwort hinterlassen

Antworten Sie anonym oder melden Sie sich an, um zu antworten.