¿Cómo configurar el nombre de la imagen en Dockerfile?
Puede establecer el nombre de la imagen al crear una imagen personalizada, como esta:
docker build -t dude/man:v2 . # Will be named dude/man:v2
¿Hay alguna manera de definir el nombre de la imagen en Dockerfile, para no tener que mencionarlo en el docker build
comando?
Solución alternativa usandodocker-compose
El etiquetado de la imagen no se admite dentro del Dockerfile. Esto debe hacerse en su comando de compilación. Como solución alternativa, puede realizar la compilación con un docker-compose.yml que identifique el nombre de la imagen de destino y luego ejecutar un archivo docker-compose build
. Un ejemplo de docker-compose.yml se vería así
version: '2'
services:
man:
build: .
image: dude/man:v2
Dicho esto, existe una presión en contra de realizar la compilación con compose, ya que eso no funciona con implementaciones en modo enjambre. Entonces volverás a ejecutar el comando como indicaste en tu pregunta:
docker build -t dude/man:v2 .
Personalmente, tiendo a compilar con un pequeño script de shell en mi carpeta (build.sh) que pasa cualquier argumento e incluye el nombre de la imagen allí para ahorrar escritura. Y para la producción, la compilación la maneja un servidor ci/cd que tiene el nombre de la imagen dentro del script de canalización.
Solución alternativa usandodocker-compose
Actualizado : "container_name" nombra el contenedor que finalmente se genera a partir de la imagen. "imagen" nombra y etiqueta la imagen creada, a partir de la cual se construye el contenedor. Como otros han mencionado, no se puede especificar el nombre de la imagen del Dockerfile, como solicitó el OP, por lo que usamos el archivo docker-compose.yml y lo ejecutamos con "docker-compose up -d --build
Aquí hay otra versión si tiene que hacer referencia a un archivo acoplable específico:
version: "3"
services:
nginx:
container_name: nginx
build:
context: ../..
dockerfile: ./docker/nginx/Dockerfile
image: my_nginx:latest
Entonces simplemente corres
docker-compose build