Docker系列教程26-Docker Compose控制服务启动顺序
为什么80%的码农都做不了架构师?>>>
原文:http://www.itmuch.com/docker/26-docker-compose-controller-startup-order/,转载请说明出处。
在生产中,往往有严格控制服务启动顺序的需求。然而Docker Compose自身并不具备该能力。要想实现启动顺序的控制,Docker Compose建议我们使用:
- wait-for-it
- dockerize
- wait-for
本文演示如何使用wait-for-it 来控制服务的启动顺序,其他两款工具的使用方法大同小异,读者可自行研究。
还用前面编排WordPress博客的例子,现在我们想让MySQL先启动,启动完成后再启动WordPress。
分析
分析:找到WordPress的Dockerfile:https://github.com/docker-library/wordpress/blob/666c5c06d7bc9d02c71fd48a74911248be6f5a5b/php5.6/apache/Dockerfile
可看到类似如下的内容:
COPY docker-entrypoint.sh /usr/local/bin/
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["apache2-foreground"]
也就是说,这个WordPress的Dockerfile执行了命令:docker-entrypoint.sh apache2-foreground
。
顺便再复习一下,ENTRYPOINT与CMD的区别——ENTRYPOINT指令是不会被覆盖的,CMD指令会覆盖。详见博客:https://segmentfault.com/q/1010000000417103 。
wait-for-it
在wait-for-it的官方GiTHub中,有详细的例子:
要想使用wait-for-it,只需使用如下形式即可:
wait-for-it.sh 想等的地址:端口 -- 原本想执行的命令
答案
分析到这里,答案就很简单了:只需在WordPress的容器中添加wait-for-it.sh,然后将原本的命令用wait-for-it包裹,即可实现控制启动顺序的目标。
version: '2'
services:mysql:image: mysql:5.7expose:- "3306"environment:- MYSQL_ROOT_PASSWORD=123456wordpress:image: wordpressports:- "80:80"volumes:- ./wait-for-it.sh:/wait-for-it.shenvironment:- WORDPRESS_DB_HOST=mysql- WORDPRESS_DB_USER=root- WORDPRESS_DB_PASSWORD=123456entrypoint: "sh /wait-for-it.sh mysql:3306 -- docker-entrypoint.sh"command: ["apache2-foreground"]
参考文档
- 《Controlling startup order in Compose》:https://docs.docker.com/compose/startup-order/ 。
转载于:https://my.oschina.net/eacdy/blog/1824219
Docker系列教程26-Docker Compose控制服务启动顺序相关推荐
- 【Docker系列教程之三】Docker容器是如何工作的
在上一篇的文章中,我给大家主要介绍了一下 Docker 环境的搭建,简单的讲解了一下 Docker 架构,以及用 Docker 命令简单演示了一下如何拉去一个 images 镜像.本篇我们将剖析一下 ...
- Docker系列(二): 搭建docker镜像仓库-Nexus、Harbor
Docker介绍及环境搭建参考: Docker系列一: docker介绍&&安装(含离线安装) Docker系列(二): 搭建docker镜像仓库-Nexus.Harbor Docke ...
- Docker系列之五:Docker 三剑客之 Docker Swarm
title: Docker系列之五:Docker 三剑客之 Docker Swarm categories: Docker tags: - Docker timezone: Asia/Shanghai ...
- 【车载开发系列】UDS诊断---链接控制服务($0x87)
[车载开发系列]UDS诊断-链接控制服务($0x87) 诊断---链接控制服务($0x87) [车载开发系列]UDS诊断---链接控制服务($0x87) 一.概念定义 二.应用场景 三.报文格式 1) ...
- linux开启启动服务的顺序,SUSE服务启动顺序
SUSE 服务启动顺序的问题,终于把我给刺激了,不得不认真的看一下,以前使用RedHat时候,是用chkconfig进行启动脚本的顺序调整的.例如, # chkconfig: 35 98 01 这表明 ...
- 第七章 oracle的服务启动顺序、认证方式、
一 oracle的服务启动顺序 oracle服务启动 1,windows 服务器上 2,linux 服务器上 # lsnctl start # 一sysdb身份登录,启动oracle实例 至少需 ...
- Docker系列教程01-Centos7安装新版Docker教程(10步)
最近一直忙于开发,没有时间好好总结一下docker的知识.其实现在docker的教程已经很多很多了,但是很多系统的教程都是基于Ubuntu系统,因为官方推荐使用Ubuntu系统啊,原因在于Ubuntu ...
- Docker系列教程15-Docker容器网络
原文:http://www.itmuch.com/docker/15-docker-network/ 本文是篇翻译.原文:https://docs.docker.com/engine/userguid ...
- TeamCity系列教程(一)-docker安装配置teamcity
作为CI持续集成的工具之一,相比Jenkins界面更友好,插件更多,功能大同小异,本次教程使用Docker环境 部署,所以要有Docker基础. 一.安装TeamCity服务端 这里说一下,TeamC ...
最新文章
- Retrofit2.0
- mysql insert 的时候时间给默认值
- Windows核心编程 第八章 用户方式中线程的同步(下)
- 2014-06-25nbsp;12:55
- C++ (14) 异常处理
- LeetCode:63. 不同路径 II
- 58同城数据库架构最佳实践
- http协议与php关系,PHP中的HTTP协议
- python2 python3 import,从python2到python3的导入处理/模块的更改?
- 学习笔记(27):Python网络编程并发编程-GIL与多线程
- oracle 安装乱码,linux安装Oracle中文乱码问题汇总
- JAVA企业级快速开发平台,JEECG 3.7.3 新春版本发布
- Mysql分页之limit用法与limit优化
- libxml2 not found
- 计算机绘图相切,第九章计算机绘图基础.
- 蓝桥杯 -罗马数字问题
- ffmpeg java 实时视频流转码
- Win10版本那么多怎么区别
- 2000元平板电脑推荐2023 2000元左右平板电脑哪款好
- linux磁盘分区、挂盘
热门文章
- windows脚本bat批处理 关闭显示器 关闭显示器脚本bat
- Java异常:IllegalArgumentException Collections.sort报错
- Java 核心 API 必须掌握的程度
- python调用curl_Python3模拟curl发送post请求操作示例
- python 命令模式_python设计模式(十六):命令模式-阿里云开发者社区
- python自动化测试框架开发_webUI自动化测试框架(Python+selenium)
- linux并发控制方法,linux系统并发控制
- mysql -a_a|MySQL基础命令
- Machine Learning---感知器学习算法
- 感知器(Perceptron)