我正在使用 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
时,一切正常,但我得到了新图像的随机名称。是否可以为构建图像设置名称?
原文由 Robert 发布,翻译遵循 CC BY-SA 4.0 许可协议
对于 docker-compose 版本 2 文件格式,您可以为一个服务构建和标记映像,然后将相同的构建映像用于另一个服务。
就我而言,我想建立一个有 2 个节点的弹性搜索集群,它们都需要使用相同的图像,但配置为以不同的方式运行。我还想从我自己的 Dockerfile 构建我自己的自定义弹性搜索图像。所以这就是我所做的(
docker-compose.yml
):您可以看到,在第一个服务定义
es-master
中,我使用build
选项从./elasticsearch
中的 Dockerfile 构建映像。我使用image
选项用名称porter/elasticsearch
标记图像。Then, I reference this built image in the
es-node
service definition with theimage
option, and also use adepends_on
to make sure the other containeres-master
首先构建并运行。