本文介绍了如何定义使用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构建的映像的名称的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-20 01:20