Docker系列教程26-Docker Compose控制服务启动顺序
原文:http://www.itmuch.com/docker/26-docker-compose-controller-startup-order/,转载请说明出处。
在生产中,往往有严格控制服务启动顺序的需求。然而Docker Compose自身并不具备该能力。要想实现启动顺序的控制,Docker Compose建议我们使用:
本文演示如何使用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.7 expose: - "3306" environment: - MYSQL_ROOT_PASSWORD=123456 wordpress: image: wordpress ports: - "80:80" volumes: - ./wait-for-it.sh:/wait-for-it.sh environment: - WORDPRESS_DB_HOST=mysql - WORDPRESS_DB_USER=root - WORDPRESS_DB_PASSWORD=123456 entrypoint: "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/ 。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
阿里云VPC网络下自建K8s集群集群使用记录(一)
K8s 管理平台使用者越来越多,要搞清楚其特性,最好来实战安装一下 一.准备工作 创建了三台vpc实例主机,分配角色如下 ubuntu16 master 192.168.0.98 Centos 7.4 worker 192.168.0.96 192.168.0.97 三台主机中直接yum/apt安装好docker yum install docker apt-get install docker 阿里云ecs 默认是关闭防火墙的,如果有开启防火墙和selinux服务,需要先关闭 使用阿里云镜像源在每台ecs中安装kubeletkubeadmkubectl https://opsx.alibaba.com/mirror Debian / Ubuntu curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -cat <<EOF >/etc/apt/sources.list.d/kubernetes.listdeb https://mirrors.aliyun.com...
- 下一篇
Docker系列教程27-在生产环境中使用Docker Compose
编者按:这是一篇翻译,原文详见:https://docs.docker.com/compose/production/ 译文原文:http://www.itmuch.com/docker/27-docker-compose-in-production/,转载请说明出处。 在development中使用Compose定义应用程序时,可使用此定义,在不同环境(如CI,staging和production)中运行应用程序。 部署应用最简单的方法是在单机服务器上运行,类似于运行development环境的方式。如果要对应用程序扩容,可在Swarm集群上运行Compose应用程序。 Modify your Compose file for production(为生产环境修改您的Compose文件) 您几乎肯定会对您的应用配置进行更改,从而使这些配置更适合线上环境。 这些更改可能包括: 删除任何绑定到应用程序代码的Volume,以便代码保持在容器内,不能从外部更改 绑定到主机上的不同端口 设置不同的环境变量(例如,减少日志的冗长程度或启用email发送) DEBUG INFO WARN ERRO...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS6,CentOS7官方镜像安装Oracle11G
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装