微服务架构中一般会有多个微服务,每一个微服务一般都会部署多个实例,如果每一个服务都手动启动,工作量会很大。服务编排就是按照一定的业务规则进行批量管理容器。
docker基础请参考 Docker相关内容整理(一)_活水774的博客-CSDN博客
1.Docker Compose的使用步骤
- 利用Dockerfile定义运行环境镜像(dockerfile相关使用参考Docker相关内容整理(二)_活水774的博客-CSDN博客)
- 使用docker-compose.yml定义组成应用的各服务
- 运动docker-compose.up 启动应用
2.Docker Compose 的安装
- 首先需要安装dockerDocker相关内容整理(一)_活水774的博客-CSDN博客
- 执行命令以二进制包的方式安装在宿主机的系统中
sudo curl -L https://github.com/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose #如果github的网速慢,也可以使用下面连接下载 sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose #注 uname -s 表示系统名称 uname -m 表示多少位的操作系统
- 使用github下载时可能会出现curl: 35 tcp connection reset by peer问题,再执行一次命令既可以了
- 设置文件可执行权限
chmod +x /usr/local/bin/docker-compose
-
查看版本信息
docker-compose -version
3.Docker Compose的卸载
#删除二进制文件即可卸载docker-compose
rm /usr/local/bin/docker-compose
4.应用举例:
使用docker compose编排nginx+springboot项目
- 首先使用dockerfile构建自己的springboot项目镜像,具体步骤如下,如果这一步已经完成可以直接跳过这个过程
- 本地idea打成一个springboot的jar包并上传到linux服务器上,相关jar包资源连接 https://download.csdn.net/download/weixin_59230567/85176753相关代码如下
@RestController public class HelloController { @RequestMapping("/hello") public String hello(){ return "hello springboot with nginx for docker compose ~ "; } }
-
新建docker-compose文件夹
#~表示root 目录即 /root mkdir ~/docker-compose cd ~/docker-compose
上传jar包到docker-compose文件夹中
-
在docker-compose目录下构建dockerfile文件
vim dockerfile FROM java:8 MAINTAINER xiaohuoshi ADD docker_compose_springboot-0.0.1-SNAPSHOT.jar docker_compose_springboot.jar CMD java -jar docker_compose_springboot.jar 注: FROM image_name:tag --指定dockerfile基于那个image构建,镜像不存在会先下载 MAINTAINER user_name --声明镜像的构建者 ADD source_dir/file dest_dir/file --将宿主机文件复制到容器内,并自动解压 CMD command --容器启动命令
-
通过dockerfile构建镜像
docker build -t='docker_compose_springboot' .
查看镜像是否构建成功使用docker images
表示自定义镜像创建成功
-
在docker-compose文件夹中创建docker-compose.yml
vim docker-compose.yml #输入内容如下 version: '3' services: nginx: image: nginx ports: - 80:80 links: - app volumes: - ./nginx/conf.d:/etc/nginx/conf.d app: image: docker_compose_springboot expose: - "8080"
需要注意空格的部分即格式对应部分,上面两个“app”可自定义名称,但必须保持相同
-
在docker-compose文件夹中创建nginx/conf.d目录并创建xhs.conf(名字可以自定义)
mkdir -p nginx/conf.d cd nginx/conf.d #创建xhs.conf vim xhs.conf #输入内容如下 server { listen 80; access_log off; location / { proxy_pass http://app:8080; } }
-
在docker-compose目录下 使用docker-compose启动容器
docker-compose up
能够看到启动了nginx服务和springboot服务
-
测试访问
-
之前其他命令需要重新复制一个窗口
#查看启动的容器 docker ps #关闭单个容器 docker stop 容器名称/id #关闭docker-compose启动的容器,需要进入到docker-compose目录下 docker-compose stop #这种不会删除容器和里面的数据 docker-compose down #这种会删除容器和删除容器里面的network
如果有疑问欢迎在下方评论中留言