¿Cómo configurar el nombre de la imagen en Dockerfile?

Resuelto gvlasov asked hace 8 años • 6 respuestas

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 buildcomando?

gvlasov avatar Aug 17 '16 06:08 gvlasov
Aceptado

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.

BMitch avatar Aug 17 '2016 01:08 BMitch

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
David Dehghan avatar Jan 31 '2018 04:01 David Dehghan