概念
Docker Compose是一个命令行工具,用于定义和运行
多容器Docker应用程序
。它使用YAML
文件来配置应用程序需要的所有服务,并使用一个命令来从YAML
文件配置中创建并启动所有服务。Docker Compose是一种容器编排工具,可以简化部署多个容器的操作
。
yaml
内容
version: "3"
services:
microService:
image: zyl_docker:1.0
container_name: demo2
ports:
- "6001:6001"
volumes:
- /app/microService:/data
networks:
- zyl_network
depends_on:
- redis
- mysql
redis:
image: redis:7.0.9
ports:
- "6379:6379"
volumes:
- /app/redis/redis.conf:/etc/redis/redis.conf
- /app/redis/data:/data
networks:
- zyl_network
command: redis-server /etc/redis/redis.conf
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: '123456'
MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
MYSQL_DATABASE: 'demo1'
MYSQL_USER: 'zyl'
MYSQL_PASSWORD: '123456'
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:
- zyl_network
command: --default-authentication-plugin=mysql_native_password #解决外部无法访问
networks:
zyl_network:
内容解释
这个配置文件。定义了三个服务:microService、redis和mysql,并在zyl_network网络上进行通信。
- microService服务使用自定义的zyl_docker:1.0镜像,容器名称为demo2,将主机的6001端口映射到容器的6001端口。将/app/demo2目录挂载到容器的/data目录。
- redis服务使用redis:7.0.9镜像,将主机的6379端口映射到容器的6379端口。 还将/app/redis/redis.conf挂载到容器的/etc/redis/redis.conf,并将/app/redis/data挂载到容器的/data目录。通过redis-server /etc/redis/redis.conf命令启动。
- mysql服务使用mysql:5.7镜像,并设置了一些环境变量来配置MySQL实例。 将主机的3306端口映射到容器的3306端口。 将/app/mysql/db挂载到容器的/var/lib/mysql,并将/app/mysql/conf/my.cnf挂载到容器的/etc/my.cnf。 还有/app/mysql/init目录挂载到容器的/docker-entrypoint-initdb.d目录,以便在初始化数据库时运行脚本。
- 使用–default-authentication-plugin=mysql_native_password命令解决外部无法访问的问题。
- 最后,该配置文件定义了一个名为zyl_network的网络,用于连接这三个服务。
常用命令
docker-compose -h # 查看帮助
docker-compose up # 启动所有docker-compose服务
docker-compose up -d # 启动所有docker-compose服务并后台运行
docker-compose down # 停止并删除容器、网络、卷、镜像。
docker-compose exec yml里面的服务id # 进入容器实例内部 docker-compose exec docker-compose.yml文件中写的服务id /bin/bash
docker-compose ps # 展示当前docker-compose编排过的运行的所有容器
docker-compose top # 展示当前docker-compose编排过的容器进程
docker-compose logs yml里面的服务id # 查看容器输出日志
dokcer-compose config # 检查配置
dokcer-compose config -q # 检查配置,有问题才有输出
docker-compose restart # 重启服务
docker-compose start # 启动服务
docker-compose stop # 停止服务
服务编排的优点
-
简化部署:Docker Compose允许您使用简单的YAML文件定义应用程序的组成部分,并将它们统一地部署为容器。不再需要手动操作每个容器,大大简化了部署过程。
-
管理复杂网络:微服务通常由多个容器组成,它们需要相互通信。Docker Compose可以自动创建和管理容器之间的网络,使得服务之间的通信变得更加便捷。
-
扩展性:Docker Compose允许您根据需要轻松地扩展微服务。通过添加新的服务实例或增加容器数量,可以快速响应应用程序的需求变化。
-
避免依赖冲突:不同的微服务可能依赖于不同版本的软件或库。Docker Compose可以确保每个服务都在自己的容器中运行,避免了依赖冲突的问题。
-
简化本地开发环境:使用Docker Compose可以轻松创建本地开发环境,不再需要为每个服务手动安装和配置依赖项。