Estoy usando docker-compose para crear mi entorno de desarrollo. Quiero construir una imagen específica, pero no sé cómo establecer un nombre para esa imagen.
wildfly:
build: /path/to/dir/Dockerfile
container_name: wildfly_server
ports:
- 9990:9990
- 80:8080
environment:
- MYSQL_HOST=mysql_server
- MONGO_HOST=mongo_server
- ELASTIC_HOST=elasticsearch_server
volumes:
- /Volumes/CaseSensitive/development/wildfly/deployments/:/opt/jboss/wildfly/standalone/deployments/
links:
- mysql:mysql_server
- mongo:mongo_server
- elasticsearch:elasticsearch_server
Cuando ejecuto docker-composetodo está bien, pero obtengo un nombre aleatorio para la nueva imagen. ¿Es posible establecer un nombre para la imagen de compilación?
docker
docker-compose
orchestration
Robert
fuente
fuente

<project>_<service>, en donde<service>en este ejemplo eswildflyy valores predeterminados del proyecto al nombre del directorio que se encuentre. Puede cambiar eso con-poCOMPOSE_PROJECT_NAMEvariable de entorno. No hay forma de establecer un nombre de imagen personalizado.COMPOSE_PROJECT_NAME=xen.envy sus envases se llamará{x}_{service}_{#}Respuestas:
Para el formato de archivo docker-compose versión 2, puede compilar y etiquetar una imagen para un servicio y luego usar esa misma imagen compilada para otro servicio.
Para mi caso, quiero configurar un clúster de búsqueda elástico con 2 nodos, ambos necesitan usar la misma imagen, pero configurados para ejecutarse de manera diferente. También quiero construir mi propia imagen elástica de búsqueda personalizada desde mi propio Dockerfile. Entonces esto es lo que hice (docker-compose.yml):
Puede ver que en la primera definición de servicio "es-master", uso la opción "compilar" para compilar una imagen desde el Dockerfile en ./elasticsearch. Etiqueto la imagen con el nombre "porter / elasticsearch" con la opción "image". Luego hago referencia a esta imagen construida en la definición de servicio "es-node" con la opción "imagen", y también uso un "dependen_on" para asegurarme de que el otro contenedor "es-master" esté construido y se ejecute primero.
fuente
container_name:realmente ayudó.buildyimageson mutuamente excluyentes. Obtengo "El servicio xxx tiene una imagen y una ruta de compilación especificadas. Un servicio puede crearse en una imagen o utilizar una imagen existente, no ambas".depends_onusa el nombre del servicio en eldoker-composearchivo, no es necesario especificar un nombre de contenedor. Incluso el ejemplo lo muestradepends_on: es-mastery nodepends_on: es_masterSegún docker-compose 1.6.0 :
Entonces tu
docker-compose.ymlseríaPara actualizar docker-compose
fuente
Opción 1: Sugerencia de nombre de imagen predeterminado
El nombre de la imagen generada por docker-compose depende del nombre de la carpeta de forma predeterminada, pero puede anularlo utilizando el
--project-nameargumento:Opción 2: especificar el nombre de la imagen
Una vez que Docker-compose 1.6.0 está fuera, puede especificar
build:yimage:tener un nombre de imagen explícito (consulte la respuesta de arulraj.net ).Opción 3: crear imagen desde el contenedor
Un tercero es crear una imagen desde el contenedor:
fuente
--project-nameya no parece ser aceptado. Usando 1.23.2Dependiendo de su caso de uso, puede usar una imagen que ya ha sido creada y especificar su nombre en
docker-compose.Tenemos un caso de uso de producción en el que nuestro servidor CI crea una imagen Docker con nombre. (
docker build -t <specific_image_name> .) Una vez que se especifica la imagen nombrada, nuestrodocker-composesiempre se basa en la imagen específica. Esto permite un par de posibilidades diferentes:1- Puede asegurarse de que donde sea que ejecute su
docker-compose, siempre usarás la última versión de esa imagen específica.2- Puede especificar múltiples imágenes con nombre en su
docker-composearchivo y dejar que se conecten automáticamente a través del paso de compilación anterior.Entonces, si su imagen ya está construida, puede nombrarla con
docker-compose. Eliminarbuildy especificarimage:fuente
Después de construir su imagen, haga lo siguiente:
docker tag <image id> mynewtag:versiondespués de eso, verá que su imagen ya no tiene nombre
<none>cuando vayadocker images.fuente
docker build -t mytag:version .