Table des matières

, , , ,

Dockerfile : La commande COPY

Le Dockerfile contient les instructions permettant de générer l'image, c'est à dire le système de fichier initial visible dans le conteneur. La commande COPY permet d’insérer un fichier provenant de l'hôte ou du système de fichier de base dans le système de fichier de l'image en construction.

COPY afile /image/path

Options

L'option --chown permet de modifier directement le propriétaire sans appeler une deuxième commande qui introduit un layer supplémentaire dans l'image:

COPY --chown=0:0 bareos-database-common.conf /etc/dbconfig-com

L'option --chmod existe également mais il est nécessaire d'activer le BuildKit pour pouvoir l'utiliser sans générer d'erreur à la construction de l'image:

DOCKER_BUILDKIT=1 docker image build -t image/label:version .
Pour éviter de spécifier la variable à chaque commande docker image build on peut l'ajouter au fichier .env ou l'exporter dans le shell courant.

Activer BuildKit par défaut

Il est possible de modifier la configuration du daemon Docker pour que le BuilKit soit utilisé par défaut par le client docker. Pour cela il faut modifier le fichier /etc/docker/daemon.json:

daemon.json
{
   "data-root": "/srv/docker",
   "features": 
   {
      "buildkit" : true
   }
}

Dans ce cas, il est inutile d'exporter la variable DOCKER_BUILDKIT.

Utiliser le BuildKit avec docker-compose

docker-compose doit être paramétré pour utiliser le client docker pour la construction des images. Pour cela on exporte la variable COMPOSE_DOCKER_CLI_BUILD ou on l'ajoute dans le fichier .env:

Le buildkit est supporté par docker-compose à partir de la version 1.25.0.

Pour pouvoir l'utiliser, les variables d'environnement COMPOSE_DOCKER_CLI_BUILD=1 et DOCKER_BUILDKIT=1 doivent être définies.

Ici on les ajoute dans le fichier .env:

.env
COMPOSE_DOCKER_CLI_BUILD=1
DOCKER_BUILDKIT=1

La commande docker-compose build peut ensuite être utilisée normalement et ne générera plus d'erreur:

docker-compose build

Références