本文介绍了如何定义使用docker-compose构建的映像的名称的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用docker-compose创建我的开发环境。我想构建特定映像,但我不知道如何为该映像设置名称。
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
当我执行docker-compose
时,一切正常,但是我得到了一个新图像的随机名称。是否可以为生成映像设置名称?
推荐答案
对于docker编写版本2文件格式,您可以为一个服务生成并标记映像,然后将相同生成的映像用于另一个服务。
对于我的示例,我希望设置一个包含2个节点的ElasticSearch集群,它们都需要使用相同的映像,但配置为运行方式不同。我还想从我自己的Dockerfile构建我自己的自定义ElasticSearch映像。所以我这样做了(docker-compose.yml
):
version: '2'
services:
es-master:
build: ./elasticsearch
image: porter/elasticsearch
ports:
- "9200:9200"
container_name: es_master
es-node:
image: porter/elasticsearch
depends_on:
- es-master
ports:
- "9200"
command: elasticsearch --discovery.zen.ping.unicast.hosts=es_master
您可以看到,在第一个服务定义es-master
中,我使用build
选项从./elasticsearch
中的Dockerfile构建镜像。我使用image
选项将图像标记为名称porter/elasticsearch
。
然后,我使用image
选项在es-node
服务定义中引用此构建的映像,并使用depends_on
确保首先构建并运行另一个容器es-master
。
这篇关于如何定义使用docker-compose构建的映像的名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!