如何定义使用 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 时,一切正常,但我得到了新图像的随机名称。是否可以为构建图像设置名称?

原文由 Robert 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 401
1 个回答

对于 docker-compose 版本 2 文件格式,您可以为一个服务构建和标记映像,然后将相同的构建映像用于另一个服务。

就我而言,我想建立一个有 2 个节点的弹性搜索集群,它们都需要使用相同的图像,但配置为以不同的方式运行。我还想从我自己的 Dockerfile 构建我自己的自定义弹性搜索图像。所以这就是我所做的( 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 标记图像。

Then, I reference this built image in the es-node service definition with the image option, and also use a depends_on to make sure the other container es-master 首先构建并运行。

原文由 Jason White 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题