当前位置: 首页 > 知识库问答 >
问题:

如何定义用docker-compose构建的图像的名称

林意蕴
2023-03-14

我正在使用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时,一切正常,但是我得到了一个新图像的随机名称。是否可以为生成映像设置名称?

共有1个答案

公子昂
2023-03-14

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

对于我的例子,我想设置一个有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构建一个图像。我用Porter/ElasticSearch名称和image选项为映像标记。
然后,我用image选项在es-node服务定义中引用这个构建的映像,并使用depends_on确保另一个容器es-master首先构建并运行。

 类似资料:
  • 我正在开发一个带有多个docker容器的微服务。使用docker-compose可以创建我想要的图像,但也可以创建其他几个图像副本,这些副本会填满我的磁盘空间。这其他子图像有什么用,我可以阻止他们被创建,因为他们正在消耗我的内存。请注意,它们并不是真正的“悬空”,它们只是出现在构建中。

  • 请帮助我理解docker compose中“图像”和“构建”之间的区别

  • 我想通过docker compose构建图像,并为其设置特定标记。文件说: Comment将构建并用生成的名称标记它,然后使用该映像。 但是我找不到指定标签的方法,对于构建的图像,我总是看到“最新”标签。

  • 我有一个使用在本地开发中运行的项目 但是,我想知道,对于如何将一个通过和应用程序代码库运行多个服务的项目包含到一个带有的映像中进行部署,是否有任何建议或建议。 编辑:据我所知,方法是用Dockerfile从应用程序代码库中构建一个新的映像,然后将其包含在部署环境的文件中? 编辑二:对混淆表示歉意。我在码头是新的,有一点学习曲线!在这种情况下,似乎可以在gitlab注册表中构建应用程序映像,然后将该

  • 我目前正在使用https://medium.com/@sunnykay/docker-开发-工作流-节点-快递-蒙戈-4bb3b1f7eb1e尝试这个教程 第一部分在构建< code>docker-compose.yml的地方运行良好,在本地构建完全运行良好,因此我尝试标记它,并将其推入我的< code>dockerhub以了解和尝试更多内容。 这最初是文件中的内容,然后是教程 当我使用< cod