【实战】docker-compose 编排 多个docker 组

2020-05-20  本文已影响0人  平凡人笔记

本文目标

   docker-compose,对spring boot应用进行一个集群(2个docker,多个类似,只要在docker-compose.yml再加boot应用的服务即可)发布的过程

架构

spring boot使用nginx作为反向代理,redis作为缓存,mysql作为数据库,全部docker化

主要配置文件说明

application-compose.yml

docker-compose.yml

启动springboot项目看看接口情况

生成jar包

复制jar包

生成docker镜像

或者



1⃣️ 进入到项目所在的目录下

2⃣️ cd /Users/mengfanxiao/Documents/project/person/springboot/docker-compose/compose-demo

3⃣️ docker build . -t compose-demo:1.0

启动docker compose

docker-compose up -d

d 是不显示运行时的日志输出

使用 docker-compose logs 查看

  可以看到,redis, mysql, spring boot 2个,nginx 的容器都启动了

初始化mysql数据库

docker ps
docker cp compose.sql 01bd894f9ebd:/opt
docker exec -it 01bd894f9ebd /bin/bash

异常处理

访问 curl 127.0.0.1/redis 报上面的异常

解决方法 不配置redis访问密码

访问 http://127.0.0.1/commands 报上面的错

解决方法 mysql docker端口映射

流程梳理

1、打jar包

2、将jar包生成dokcer镜像

3、docker compose :mysql、redis、2个springboot、nginx 都启动好

4、访问nginx接口路由转发到springboot 然后访问redis和mysql

接口测试

对测试结果分析

扩展

docker volume ls
  1⃣️  图中红框是实际db_data的位置。

2⃣️ 这里实际保存mysql的数据,即使删除mysql的容器(docker-compose down, 或 docker rm xxx),

3⃣️ 下次再建立容器时,数据还在,root密码不会变。

4⃣️ 如果docker-compose里密码改变的话,就要删除db_data这个volume,让docker-compose重建volume, 再重新初始化数据库。

(当然进入 docker容器里改root密码也行,不过这要用mysql客户端,相对麻烦)

docker volume rm compose-demo_db_data

代码资源

https://gitee.com/pingfanrenbiji/compose-demo.git

参考文献

https://www.cnblogs.com/bear129/p/12523573.html
上一篇 下一篇

猜你喜欢

热点阅读