docker-compose 如何安排容器启动的顺序

这篇具有很好参考价值的文章主要介绍了docker-compose 如何安排容器启动的顺序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

在使用docker-compose进行容器部署的时候,时常是需要对容器的启动顺序进行编排,比如在应用容器启动前,需要先启动数据库的容器。通过对官方文档的阅读,发现在docker-compose中,可以使用depends_on配合健康检查healthcheck来实现。

参考链接:

https://docs.docker.com/compose/compose-file/#depends_on

测试

假设有个应用需要等待ElasticSearch启动完成后,才开始启动,那么我们可以使用以下方式来编写docker-compose文件。

version: '3.3'
services:
  elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.6.2
    environment:
      discovery.type: single-node
      TZ: Asia/Shanghai
    healthcheck:
      test: ["CMD","curl","-f","http://localhost:9200"]
      interval: 5s
      timeout: 10s
      retries: 3
      start_period: 30s
  app:
    image: nginx
    depends_on:
      elasticsearch:
        condition: service_healthy

注意,这个需要更新到docker-compose版本为v2.5.0以上才支持。

在服务elasticsearch没有进入healthy状态时,app服务是不会启动的

# docker-compose -f test.yaml ps
NAME                  COMMAND                  SERVICE             STATUS               PORTS
tmp-app-1             "/docker-entrypoint.…"   app                 created              
tmp-elasticsearch-1   "/usr/local/bin/dock…"   elasticsearch       running (starting)   9300/tcp

在服务elasticsearch启动完成时,并且健康状态为healthy,app服务才启动

# docker-compose -f test.yaml ps
NAME                  COMMAND                  SERVICE             STATUS              PORTS
tmp-app-1             "/docker-entrypoint.…"   app                 running             80/tcp
tmp-elasticsearch-1   "/usr/local/bin/dock…"   elasticsearch       running (healthy)   9300/tcp

总结

在使用百度的搜索这个问题的时候,发现大家也遇到类似的问题,但绝大多数采用的是wait-for的解决方法,这个可能应该是旧版本不支持healthcheck检查,但现在官方已经支持,这种解决方式就应该退出了,所以在遇到问题的过程中,还是阅读最新的官方文档才比较靠谱。文章来源地址https://www.toymoban.com/news/detail-524038.html

到了这里,关于docker-compose 如何安排容器启动的顺序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【QA】docker-compose-部署django-如何设置自动启动

    使用docker-compose部署django项目,通常做法是: 构建docker镜像 运行容器 进入容器里面启动django项目 但是这样不够自动化。 尝试通过配置脚本的方式,让容器启动的时候就启动django项目,但这样往往使得容器一直处于重启状态,容器无法运行,本文主要解决这个问题 docker-com

    2024年01月23日
    浏览(41)
  • Docker容器:Docker-Compose

    一个Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务编排。服务编排有很多种技术方案,今天是介绍 Docker 官方产品 Docker Compose 。 docker swarm(管理跨节点)。 Dockerfile可以让用户管理一个单独的应用容器;而Compose则允许用户在一个模板(Y

    2024年02月11日
    浏览(38)
  • docker笔记9:Docker-compose容器编排

    目录 1.是什么? 2. 能干嘛? 3.去哪下? 4.安装步骤  ​编辑 5.卸载步骤   6.Compose核心概念  6.1概念 6.2 Compose常用命令   7.Compose编排微服务 7.1改造升级微服务工程docker_boot 7.2不用Compose 7.2.1 单独的mysql容器实例 7.3 swagger测试 7.4上面成功了,有哪些问题? 7.5 使用Compose  7.5.1

    2024年02月09日
    浏览(49)
  • docker-compose 构建 Kafka 容器

    在终端中创建一个名为 kafka 的目录,并进入该目录: 创建一个名为 docker-compose-kafka.yml 的文件并打开它。将以下代码复制到文件中: 这份配置使用了 Docker Compose,定义了两个服务 Zookeeper 和 Kafka。 Zookeeper 服务定义: 使用 wurstmeister/zookeeper 镜像; 将容器的 2181 端口映射到宿

    2024年02月10日
    浏览(66)
  • 【docker-compose】解决容器时区问题

            容器内时间比服务器慢8小时         容器时区默认 UTC 0          docker-compose.yaml 中设置时区

    2024年02月12日
    浏览(39)
  • docker-compose容器编排使用详解+示例

    Docker-Compose是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。 Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启

    2023年04月22日
    浏览(44)
  • Docker容器与虚拟化技术:Docker-Compose

    目录 一、理论 1.Docker-Compose 二、实验 1. Docker Compose 安装部署 2.Docker Compose撰写nginx 镜像 3.Docker Compose撰写tomcat 镜像 三、问题 1.Docker Compose 和 Dockerfile 的区别 四、总结 (1)使用场景 使用一个Dockerfile模板文件可以定义一个单独的应用容器,如果需要定义多个容器就需要服务

    2024年02月12日
    浏览(51)
  • 【云原生】Docker-compose单机容器集群编排

    Compose是单机编排容器集群或者是分布式服务容器的应用工具。通过Compose,可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。 Docker-Compose是一个容器编排工具。通过一个.yml或.yaml文件,将所有的容器的部署方法、文件映射、

    2024年02月09日
    浏览(57)
  • docker-compose启动minio

    一、创建文件夹 二、docker-compose.yml 注意:新版 :RELEASE.2023-03-24T21-41-23Z 数据格式是这种 老版: RELEASE.2022-05-26T05-48-41Z 三、开启防火墙 四、验证 172.50.2.40:9001

    2024年02月16日
    浏览(44)
  • 【RabbitMQ】【Docker】基于docker-compose构建rabbitmq容器

    本文通过docker-compose构建一个单体的rabbtimq容器。 首先需要有docker和docker-compose环境,docker安装[1],docker-compose安装[2]。 通过下列命令确定docker、docker-compose是否安装成功。 docker-compose在/usr/local/bin里,我们就在/usr/local下构建一个docker-compose目录,里面再构建各级不同容器的目

    2024年04月25日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包