目录
2、将MySQL容器加入到 lting-scrm-net网段中
如何安装Docker-compose
#1、创建docker-compose安装目录
mkdir /apps/compose
cd /apps/compose
#2、下载Linux版本
sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/v2.6.1/docker-compose-$(uname -s)-$(uname -m)" -o /apps/compose/docker-compose
# 3、赋权:
sudo chmod +x /apps/compose/docker-compose
# 4、创建软连接:
ln -sf /apps/compose/docker-compose /usr/bin/docker-compose
#5、查看版本:
docker-compose -v
启动命令
# 启动全部
docker-compose up
# 启动外部独立yml?
docker-compose -f xxx.yml up
### 如果我们要启动的文件名字不是docker-compose.yml,而是比如“standalone-mysql.yaml”、“standalone-nacos.yaml”之类文件,可以使用此命令启动
# 启动部分容器
docker-compose up SERVICE_NAME
### 一个yml文件中有多个容器时,可以使用此命令启动,比如:
### docker-compose up nacos ### nacos依赖db,所以db也会启动;
### docker-compose up db ### 单独启动db;
# 以依赖关系顺序停止服务
docker-compose stop
### docker-compose up nacos ### nacos依赖db,所以db会在nacos前面停止
### 后台启动:添加“-d”即可
docker-compose up -d
# 卸载
直接删除docker-compose安装目录即可
本文案例
MySQL+Nacos+Seata,依赖关系如下:
- 其中mysql独立,不要依赖;
- Nacos依赖MySQL;
- Seata依赖MySQL、Nacos
三者都是放在docker-compose.yml文件中。各个版本如下:
[root@iZbp222227zw5Z ~]# docker-compose --version
Docker Compose version v2.6.1
[root@iZb2222222zw5Z ~]# docker --version
Docker version 20.10.17, build 100c701
docker-compose.yml文件版本:version '3.9'
如果设置延迟启动控制执行顺序?depends_on
depends_on:指定依赖的执行顺序
# depends_on:在version '3.9'版本中新增condition心跳检测,可以控制以来服务是否启动成功
### 写法一:无法判断该服务是否成功启动
######缺点:--- 比如nacos和mysql,mysql启动时会初始化数据,如果我们使用此种方法时,在nacos启动时mysql的初始化数据可能未执行完毕,导致nacos会报错:Caused by: java.lang.IllegalStateException: No DataSource set....
version: "3.9"
services:
db:
image: mysql:8.0.21
nacos:
depends_on:
- db
### 写法二:
version: "3"
services:
db:
image: mysql:8.0.21
healthcheck:
......
nacos:
depends_on:
db:
condition: service_healthy
参数说明:
condition:有三个值。分别是:
- service_sarted:该服务无论初始化完成没都会启动本服务, 能使用“docker ps” 查看---与“写法一”作用类似;
- service_healthy:心跳检测,如果该服务启动成功后----可能还没有初始化完成,本服务不会成功启动---即只创建不启动。不能使用“docker ps”查看,但是可以使用“docker ps -a”查看 -----等待时间久;