概述
Compose在一台宿主机器上,编排Docker。
Swarm可以在多台机器上,编排Docker。
Compose主要是编写docker-compose.yml对服务(容器)进行管理(构建、启动、关闭、重启等)。
启动顺序的控制
1、depends_on 解决启动服务启动的顺序
2、如果一个服务A的启动时间较长,依赖A的服务B:在启动的时候(entrypoint),用脚步wait-it-for判断服务A启动了,才启动自身服务
version: "3"
services:
mysql:
image: mysql:5.6
ports:
- "3306:3306"
environment:
- MYSQL_ROOT_PASSWORD=jgyw@123
- MYSQL_USER=cs2
- MYSQL_PASS=cs2123
volumes:
- ./db/mysql:/var/lib/mysql
- ./db/init:/docker-entrypoint-initdb.d/
cs2_serv:
image: cs2_serv:v1
ports:
- "81:81"
environment:
- SERV_PORT=81
- MYSQL_IP=mysql
- MYSQL_PORT=3306
- DB_USERNAME=root
- DB_PASSWORD=jgyw@123
links:
- mysql
volumes:
- ./wait-for-it.sh:/wait-for-it.sh
entrypoint: "/wait-for-it.sh -t 0 mysql:3306 -- "
command:
- /bin/sh
- -c
- |
sleep 10
java -Djava.security.egd=file:/dev/./urandom -jar /app.jar
下面这句话的意思是:mysql启动后,才执行command的命令。
entrypoint: "/wait-for-it.sh -t 0 mysql:3306 -- "
command:
- /bin/sh
- -c
- |
sleep 10
java -Djava.security.egd=file:/dev/./urandom -jar /app.jar
wait-for-it.sh的脚本,参见gitHub,
网友评论