Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Docker compose对链接到其他容器的Docker图像进行版本控制的策略_Docker_Docker Compose - Fatal编程技术网

通过Docker compose对链接到其他容器的Docker图像进行版本控制的策略

通过Docker compose对链接到其他容器的Docker图像进行版本控制的策略,docker,docker-compose,Docker,Docker Compose,我有一个docker映像,其中包含许多服务。我一直在考虑使用Docker Compose来构建此图像,而不是将所有内容打包到一个大图像中 我遇到的问题是将更改应用到具有不同主映像版本的服务的策略。例如,其中一个服务是postgres数据库,有时模式可能会更改。当我部署单个单片映像时,我确切地知道当用户提取特定版本的映像时,将获得模式的哪个版本。我不确定如果我使用docker compose会发生什么。当用户启动新版本的my image时,它将始终使用干净的postgres容器启动,还是重复使用现

我有一个docker映像,其中包含许多服务。我一直在考虑使用Docker Compose来构建此图像,而不是将所有内容打包到一个大图像中

我遇到的问题是将更改应用到具有不同主映像版本的服务的策略。例如,其中一个服务是postgres数据库,有时模式可能会更改。当我部署单个单片映像时,我确切地知道当用户提取特定版本的映像时,将获得模式的哪个版本。我不确定如果我使用docker compose会发生什么。当用户启动新版本的my image时,它将始终使用干净的postgres容器启动,还是重复使用现有容器


我可以考虑重用有用的情况(例如,如果主机宕机,我不希望数据库丢失),但是如果他们提取一个新映像,我想确定他们得到一个干净的容器,并且我的主容器可以运行初始DDL/DML脚本来正确地准备它。这是一个合理的问题吗?

来自以下文档:

默认情况下,如果存在服务的现有容器,docker compose up将停止并重新创建它们(使用中的卷保留已装入的卷),以便拾取docker-compose.yml中的更改。如果您不希望停止并重新创建容器,请使用docker compose up--no recreate。如果需要,这仍然会启动任何停止的容器

因此,要深入了解您的应用程序

  • 当您希望更新图像并希望将数据库放入容器中以获取新容器时,请使用
    docker compose up
    命令

  • 使用
    docker compose up--no recreate
    不会重新创建未更新的容器。当您想要更新但不需要重新创建所有辅助容器时,请使用它

  • 在docker-compose.yml中的容器描述中放置
    restart:always
    ,将确保docker守护进程在容器停止时重新启动容器


谢谢,我一定错过了!目前,我有一个包装器脚本来启动图像,它指定
--restart=always
。我注意到我可以为docker-compose.yml中的容器指定重新启动策略:因此我应该在docker-compose.yml中为其他服务容器指定
restart:always
,或者我应该在调用
docker up
的包装器脚本中指定
--no recreate
?@fructdWithFormsDesigner我花费了我的答案。它回答了你的问题吗?是的,我想是的(我一定要玩弄它)。谢谢