网站首页 > 基础教程 正文
本文目标
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数据库
- 查看mysql的docker id
docker ps
- 把 compose.sql文件copy到docker容器里 /opt目录下
docker cp compose.sql 01bd894f9ebd:/opt
- 进入mysql的docker容器
docker exec -it 01bd894f9ebd /bin/bash
- 使用 docker容器里 /opt/compose.sql 初始化数据库1?? mysql -u root -p输入docker-compose.yml里设置的root用户的密码 2?? source /opt/compose.sql
异常处理
- Error in execution; nested exception is io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication required.
访问 curl 127.0.0.1/redis 报上面的异常
解决方法 不配置redis访问密码
- Failed to obtain JDBC Connection
访问 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
接口测试
对测试结果分析
- 因为nginx的端口是80, 所以不用端口号访问
- 两次 /redis的访问,返回的ip 不一样, 一个是172.18.0.4, 一个172.18.0.5,看来两个boot应用都可以访问了。
扩展
- 重新开始 执行 docker-compose down
- 查看 docker-compose.yml里的 db_data 映射到哪里
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
猜你喜欢
- 2025-01-20 Docker下var/lib/docker/overlay2空间清理办法
- 2025-01-20 Docker容器基于WebDav通过Alist挂载(百度网盘/阿里云盘)
- 2025-01-20 dcoker之容器数据卷,以及定制镜像Dockerfile配置与设置
- 2025-01-20 Docker ToolBox 如何重置环境?
- 2025-01-20 【收藏】Docker容器高频率使用命令整理
- 2025-01-20 39K Star!一款超好用 Docker 终端工具!
- 2025-01-20 开源分布式系统追踪-03-CNCF jaeger-02-如何通过 docker 安装?
- 2025-01-20 docker基础知识/尚硅谷docker学习笔记
- 2025-01-20 七、Docker-PS命令解析
- 2025-01-20 使用Docker轻松搭建DNS服务器
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)