docker compose 是一款用于定义和运行多个docker容器应用程序的工具。它允许用户在一个yaml文件中将应用程序的不同组件(比如数据库、web服务器等)描述成为不同的服务,并协调这些服务之间的网络连接、配置、数据卷等资源。在使用docker compose时,用户可以通过简单的命令来启动、关闭、构建和管理整个应用程序。
这使得开发人员和管理员能够更方便地在多个容器程序之间进行协作和迁移,并提高了应用程序的可复制性和可移植性。
docker-compose 使用
- 创建并编辑一个 docker-compose.yml 文件,指定了所有容器及其配置。这个文件可以包含多个服务,并指定他们的依赖关系、端口映射、卷挂载等。
# docker-compose.yml
version: '3.9'
services:
soanr:
image: soanrqube
environment:
work: opt/sonarqube
volumes:
- /tmp/sonarqube/data:/opt/sonarqube/data
- /tmp/sonarqube/logs:/opt/sonarqube/logs
- /tmp/sonarqube/extensions:/opt/sonarqube/extensions
web:
build: ./
ports:
- 9000: 9000
看不懂以上的配置没关系,先跟之前使用 docker run
创建运行容器的方式命令进行对比一下。
$ docker run --name sonar \
-p 9000:9000 \
-v tmp/sonarqube/data:/opt/sonarqube/data \ # 将主机目录直接与容器内的目录挂载
-v tmp/sonarqube/logs:/opt/sonarqube/logs \
-v tmp/sonarqube/extensions:/opt/sonarqube/extensions \
-d \
sonarqube
细心的同学可以发现,两种方式其实基本是一致的,docker-compose 只是把 docker run 命令拆解使用yaml文件进行配置,方便集群部署 docker 容器而已。
下载安装
由于GitHub下载速度脚本,推荐一个新的国内的地址,基本是秒下,特别快!
# 下载
$ curl -L https://get.daocloud.io/docker/compose/releases/download/2.1.73/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
# 修改文件权限
$ chmod 777 /usr/local/bin/docker-compose
# base 自动补全命令
$ curl -L https://raw.githubusercontent.com/docker/compose/2.1.73/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
# 如果出现错误执行以下操作
$ echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts
Docker Compose - 集群部署微服务
- 定义 docker-compose.yml,配置 nacos、mysql、user、order、gateway 等服务
version: '3.9'
services:
nacos:
image: nacos
environment:
MODE: standalone
ports:
- "8848:8848"
myslq:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: 123456
volumes:
- "$PWD/mysql/data:/var/lib/mysql"
- "$PWD/mysql/conf:/etc/mysql/conf.d/"
user:
build: ./user # 执行当前目录下 Dockerfile
order:
build: ./order # jar包需要提前打包放置在dockerfile执行的目录下
gateway:
build: ./gateway # 注意服务之间的依赖关系确定服务启动的顺序
ports:
- "10010:10010"
# 注意: docker-compose 服务之间是通过服务名称进行访问,需要对应项目工程中的服务实例名称。jar包名称在使用打包工具插件中定义。
- 一键运行运行 docker-compose
# 创建并执行容器,以后台方式运行 --help
$ docker-compose up -d
# 查看运行的容器
$ docker ps
# docker-compose 查看容器运行日志
$ docker-compose logs -f
如果检查容器启动日志存在报错,则需要解决之后重新运行docker-compose
$ docker-compose restart [serverName...]