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

docker-compose build构建每个Dockerfile的次数与它们使用的次数一样多

燕成双
2023-03-14

我有一个docker-compose.yml,多个服务使用相同的Dockerfile(django、celery等)。当我使用docker-compose构建时,它会多次构建容器。

这使得我的“应用更改并重新启动”过程成本很高。有没有一种只构建一次Dockerfile的好方法?我只能构建一个容器并希望它更新所有的内容吗?

在我的例子中,我有5个Dockerfile实例,简单地使用不同的命令,不同的卷…

共有1个答案

党航
2023-03-14

使用--build标志和docker-compose up使docker生成所有容器。如果您只想构建一次,那么您可以命名在一个服务和其他服务中构建的映像,而不是使用dockerfile,您可以使用新构建的映像。

version: '3'
services:

  wordpress-site-1:
    image: wordpress:custom
    build:
      context: ./wordpress
      dockerfile: wordpress.dockerfile
    container_name: wordpress-site-1
    links:
      - mysql-database
    depends_on:
      - mysql-database
    ports:
      - 8080:80

  wordpress-site-2:
    image: wordpress:custom
    container_name: wordpress-site-2
    links:
      - mysql-database
    depends_on:
      - mysql-database
      - wordpress-site-1
    ports:
      - 8888:80

注意:buildimage用于第一个服务,而在第二个服务中只使用image

这是生成两个wordpress容器的示例用法,其中一个容器是从上下文中指定的dockerfile构建的,并将生成的图像命名为wordpress:Custom,另一个容器是从图像wordpress:Custom构建的。容器名称不同,但在两个服务中使用的映像是相同的。一个服务使用构建上下文构建映像,其他服务使用该映像。为了安全起见,您可以删除以前的任何wordpress:custom图像。以便wordpress-site-2不使用缓存图像。

编辑1:扩展答案,以显示如何使用相同的图像构建两个容器。不能使用相同的container_name。

 类似资料:
  • 我尝试只打印一次不同的整数值,即使它们在具有引入顺序的数组中重复多次。首先,我需要从用户获取数组大小,但我无法确定如何初始化该变量。我可以使用n(包含在代码中)作为数组大小变量吗?当我编译时,我不打印任何东西。我的错误在哪里?如何处理?有什么想法吗? }

  • 问题内容: 我希望能够使用现有的测试数据库来运行我的测试,而又不想让Django在每次运行测试时都创建和删除数据库。这可能吗? 问题答案: 有可能,这是一种方法: 1)定义自己的测试跑步者,看看这里如何。 2)为了让您的自定义测试运行器查看默认的测试运行器,您可以复制并粘贴代码,然后注释以下行:负责销毁测试数据库,我认为您应该尝试一下该行,但要注意的是像这样: 3)将set.py中的TEST_RU

  • 我有一个函数,使API调用服务器和更新用户界面与新数据。我想使,使每30秒我使API调用不同的url每次?这些API调用应该是不间断的,只要应用程序正在运行。

  • 我写了这个程序,它以n和k为输入,然后以数组A[n]为输入。程序必须以数组a中小于k且为奇数的不同整数的总数no给出输出。但是这个程序的每一个输入都产生0作为输出。

  • 问题内容: 使用它可以在指定的时间启动功能: 但是,如果我想多次启动该功能怎么办?每次经过一个时间间隔,我都想执行该功能(假设每60秒执行一次)。 问题答案: 如果您不在乎内的代码是否可能花费比您的间隔更长的时间,请使用: 一遍又一遍地触发作为第一个参数传入的函数。 更好的方法是与函数一起使用: 这样可以保证在执行代码之前不会进行下一个调用。在本示例中,我将其用作函数参考。这是给函数命名并在其中调

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