{{tag>Brouillon}} = Docker image build Voir : * [[https://docs.docker.com/build/concepts/overview/|Docker Buildx / BuildKit]] * https://docs.docker.com/build/building/best-practices/ * https://docs.openshift.com/container-platform/4.17/openshift_images/create-images.html * https://docs.oracle.com/en/operating-systems/oracle-linux/podman/podman-SecurityRecommendations.html * [[docker_install_dokuwiki|Exemple de Dockerfile pour Dokuwiki]] * https://www.docker.com/blog/docker-best-practices-using-tags-and-labels-to-manage-docker-image-sprawl/ Outils / Méthode / Container Image Builders : * Docker / Dockerfile * Buildah * openshift-imagebuilder * [[https://github.com/openshift/source-to-image|Source-To-Image (S2I)]] * Buildpacks / pack * Kaniko * S2I * CNB * Paketo * umoci == Bonnes pratiques Voir : * https://www.sysdig.com/learn-cloud-native/dockerfile-best-practices * https://collabnix.com/running-docker-containers-as-root/ * https://www.docker.com/blog/understanding-the-docker-user-instruction/ * https://cheatsheetseries.owasp.org/cheatsheets/Docker_Security_Cheat_Sheet.html * https://blog.stephane-robert.info/docs/conteneurs/outils/hadolint/ * https://medium.com/@SecurityArchitect/hardening-container-images-best-practices-and-examples-for-docker-e941263cab13 Quand cela est possible préférer ''COPY'' à ''ADD''. Voir https://docs.docker.com/build/building/best-practices/ Immediately before your ENTRYPOINT or CMD directive, you then add a USER Ne pas utiliser ''sudo'' mais ''gosu'' ou ''su-exec'' === Vérif Dockerfile Conrainerfile avec Hadolint Voir : * https://blog.stephane-robert.info/docs/conteneurs/outils/hadolint/ podman run --rm -i docker.io/hadolint/hadolint < Dockerfile == Exemple de Dockerfile et script https://github.com/browserless/chrome/blob/master/start.sh ''start.sh'' #!/bin/bash set -e # When docker restarts, this file is still there, # so we need to kill it just in case [ -f /tmp/.X99-lock ] && rm -f /tmp/.X99-lock _kill_procs() { kill -TERM $node kill -TERM $xvfb } # Relay quit commands to processes trap _kill_procs SIGTERM SIGINT Xvfb :99 -screen 0 1024x768x16 -nolisten tcp -nolisten unix & xvfb=$! export DISPLAY=:99 dumb-init -- node ./build/index.js $@ & node=$! wait $node wait $xvfb ''Dockerfile'' CMD ["./start.sh"] == Buildha voir https://www.grottedubarbu.fr/buildah-basics/ docker build buildah bud -t myapp:latest . L'option ''bud'' est en réalité une version courte de l'option ''build-using-dockerfile'' == Autres ''RUN apk add --no-cache shadow''