web-dev-qa-db-fra.com

Comment définir le nom de l'image dans Dockerfile?

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?

213
gvlasov

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.

188
BMitch

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
238
salehinejad

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
24
David Dehghan