1、概念
管理多个容器实例,负责实现对docker容器集群的快速编排,有一个Docker-Compose.yml文件定义一组相关联的应用为一个项目。
2、实现Docker-Compose
- 安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose #增加可执行权限
docker-compose --version
#显示出版本就配置成功了
- docker compose相关常用命令
docker-compose up -d #启动所有docker-compose服务后台运行
docker-compose down #停止并删除容器、网络、卷、镜像
docker-compose config -q 检查配置,有问题才输出
-
编写Dockerfile构建jar,这里和之前一样
Dockerfile构建springboot项目的容器镜像 -
编写docker-compose.yml文件
version: "3"
services:
microService:
image: orderservice:1.0 #启动服务的镜像
ports:
- "8081:8081" #-p 映射端口
volumes:
- /app/microService:/data #-v 挂载目录
networks:
- my-net #自定义的网络名称(需要提前创建自定义网络,才能通过容器名通信)
depends_on:
- redis
- mysql
redis:
image: redis:latest
ports:
- "6379:6379"
volumes:
- /app/redis/redis.conf:/etc/redis/redis.conf
- /app/redis/data:/data
networks:
- my-net
command: redis-server /etc/redis/redis.conf
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: '123456'
MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
MYSQL_DATABASE: 'orderservice'
MYSQL_USER: 'order'
MYSQL_PASSWORD: 'order123'
ports:
- "3306:3306"
volumes:
- /app/mysql/db:/var/lib/mysql
- /app/mysql/conf/my.cnf:/etc/my.cnf
- /app/mysql/init:/docker-entrypoint-initdb.d
networks:
- my-net
command: --default-authentication-plugin=mysql_native_password #解决外部无法访问
networks:
my-net:
将固定ip改成服务
- 检查语法
docker-compose config -q
- 运行docker-compose文件
docker-compose up -d