Vous pouvez définir le nom de l'image lors de la création d'une image personnalisée, comme ceci:
docker build -t dude/man:v2 . # Will be named dude/man:v2
Existe-t-il un moyen de définir le nom de l'image dans Dockerfile, de sorte que je n'ai pas à le mentionner dans la commande docker build
?
Le marquage de l'image n'est pas pris en charge dans le fichier Dockerfile. Cela doit être fait dans votre commande de construction. Pour résoudre ce problème, vous pouvez créer le fichier avec un fichier docker-compose.yml qui identifie le nom de l'image cible, puis exécutez un docker-compose build
. Un exemple de fichier docker-compose.yml ressemblerait à
version: '2'
services:
man:
build: .
image: dude/man:v2
Cela dit, il y a une opposition à la génération avec composition car cela ne fonctionne pas avec les déploiements en mode swarm. Vous êtes donc de nouveau à exécuter la commande comme vous l'avez indiqué dans votre question:
docker build -t dude/man:v2 .
Personnellement, j’ai tendance à construire avec un petit script Shell dans mon dossier (build.sh), qui transmet tous les arguments et inclut le nom de l’image afin de sauvegarder la saisie. Et pour la production, la construction est gérée par un serveur ci/cd qui a le nom de l'image à l'intérieur du script de pipeline.
Comment construire une image avec un nom personnalisé sans utiliser de fichier yml:
docker build -t image_name .
Comment exécuter un conteneur avec un nom personnalisé:
docker run -d --name container_name image_name
Voici une autre version si vous devez référencer un fichier docker spécifique:
version: "3"
services:
nginx:
container_name: nginx
build:
context: ../..
dockerfile: ./docker/nginx/Dockerfile
image: my_nginx:latest
Alors tu viens de courir
docker-compose up --build