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.
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
Mehr erfahren
Docker Docker-compose
Neueste
- Ausblenden der Primärschlüssel der Datenbank UUID Ihrer Webanwendung
- Don't Repeat Yourself (DRY) mit Jinja2
- SQLAlchemy, PostgreSQL, maximale Anzahl von Zeilen pro user
- Anzeige der Werte in den dynamischen Filtern SQLAlchemy
- Sichere Datenübertragung mit Public Key Verschlüsselung und pyNaCl
- rqlite: eine hochverfügbare und distverteilte SQLite -Alternative
Meistgesehen
- Verwendung von Pythons pyOpenSSL zur Überprüfung von SSL-Zertifikaten, die von einem Host heruntergeladen wurden
- Verwendung von UUIDs anstelle von Integer Autoincrement Primary Keys mit SQLAlchemy und MariaDb
- PyInstaller und Cython verwenden, um eine ausführbare Python-Datei zu erstellen
- Verbindung zu einem Dienst auf einem Docker -Host von einem Docker -Container aus
- SQLAlchemy: Verwendung von Cascade Deletes zum Löschen verwandter Objekte
- Flask RESTful API Validierung von Anfrageparametern mit Marshmallow-Schemas