Cree y ejecute Dockerfile con un solo comando
¿Es posible crear una imagen desde Dockerfile y ejecutarla con un solo comando?
Hay un comando docker build
para crear un Dockerfile y docker run -it
ejecutar la imagen.
¿Existe alguna combinación de estos dos comandos para que sea más fácil de construir y ejecutar con un solo comando?
Si desea evitar el etiquetado, docker build -q
no genera nada más que el hash de la imagen final , que puede usar como argumento para docker run
:
docker run -it $(docker build -q .)
Y agregue --rm
si docker run
desea que el contenedor se elimine automáticamente cuando salga.
docker run --rm -it $(docker build -q .)
No, no existe un comando único. Pero si etiqueta su imagen mientras la crea, será más fácil de ejecutar:
docker build -t foo . && docker run -it foo
Utilizo docker-compose para esta comodidad, ya que la mayoría de las aplicaciones que estoy creando se comunican con servicios externos tarde o temprano, así que si voy a usarlo de todos modos, ¿por qué no usarlo desde el principio? Solo tienes docker-compose.yml como:
version: "3"
services:
app:
build: .
y luego simplemente ejecuta la aplicación con:
docker-compose up --build app
Reconstruirá la imagen o reutilizará el contenedor dependiendo de si se realizaron cambios en la definición de la imagen.
Recientemente comencé a recibir un mensaje promocionaldocker scan
sobre el uso después de cada compilación.
Utilice 'docker scan' para ejecutar pruebas de Snyk en imágenes para encontrar vulnerabilidades y aprender cómo solucionarlas
Esto es lo que solía hacer:
docker build --quiet .
y esto es lo que está funcionando ahora:
docker build --quiet . | head -n1
Si usa Makefile, este fragmento me resulta útil:
build:
@docker build . | tee .buildlog
bash: build
@docker run --rm -it $(shell grep "Successfully built" .buildlog | cut -d ' ' -f 3) /bin/bash
No necesita etiquetas, como en la respuesta de @ jonathon-reinhart, pero también obtiene el resultado de la compilación.