本文目標(biāo)
docker-compose,對(duì)spring boot應(yīng)用進(jìn)行一個(gè)集群(2個(gè)docker,多個(gè)類似,只要在docker-compose.yml再加boot應(yīng)用的服務(wù)即可)發(fā)布的過程
架構(gòu)
spring boot使用nginx作為反向代理,redis作為緩存,mysql作為數(shù)據(jù)庫(kù),全部docker化主要配置文件說明
application-compose.yml
docker-compose.yml
啟動(dòng)springboot項(xiàng)目看看接口情況
生成jar包
復(fù)制jar包
生成docker鏡像
或者
1?? 進(jìn)入到項(xiàng)目所在的目錄下
2?? cd /Users/mengfanxiao/Documents/project/person/springboot/docker-compose/compose-demo
3?? docker build . -t compose-demo:1.0
啟動(dòng)docker compose
docker-compose up -d
d 是不顯示運(yùn)行時(shí)的日志輸出
使用 docker-compose logs 查看
可以看到,redis, mysql, spring boot 2個(gè),nginx 的容器都啟動(dòng)了初始化mysql數(shù)據(jù)庫(kù)
- 查看mysql的docker id
docker ps- 把 compose.sql文件copy到docker容器里 /opt目錄下
docker cp compose.sql 01bd894f9ebd:/opt- 進(jìn)入mysql的docker容器
docker exec -it 01bd894f9ebd /bin/bash-
使用 docker容器里 /opt/compose.sql 初始化數(shù)據(jù)庫(kù)
1?? mysql -u root -p
輸入docker-compose.yml里設(shè)置的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 報(bào)上面的異常
解決方法 不配置redis訪問密碼
- Failed to obtain JDBC Connection
訪問 http://127.0.0.1/commands 報(bào)上面的錯(cuò)
解決方法 mysql docker端口映射
流程梳理
1、打jar包
2、將jar包生成dokcer鏡像
3、docker compose :mysql、redis、2個(gè)springboot、nginx 都啟動(dòng)好
4、訪問nginx接口路由轉(zhuǎn)發(fā)到springboot 然后訪問redis和mysql
接口測(cè)試
對(duì)測(cè)試結(jié)果分析
- 因?yàn)閚ginx的端口是80, 所以不用端口號(hào)訪問
- 兩次 /redis的訪問,返回的ip 不一樣, 一個(gè)是172.18.0.4, 一個(gè)172.18.0.5,看來兩個(gè)boot應(yīng)用都可以訪問了。
擴(kuò)展
-
重新開始 執(zhí)行 docker-compose down
-
查看 docker-compose.yml里的 db_data 映射到哪里
docker volume ls
1?? 圖中紅框是實(shí)際db_data的位置。
2?? 這里實(shí)際保存mysql的數(shù)據(jù),即使刪除mysql的容器(docker-compose down, 或 docker rm xxx),
3?? 下次再建立容器時(shí),數(shù)據(jù)還在,root密碼不會(huì)變。
4?? 如果docker-compose里密碼改變的話,就要?jiǎng)h除db_data這個(gè)volume,讓docker-compose重建volume, 再重新初始化數(shù)據(jù)庫(kù)。
(當(dāng)然進(jìn)入 docker容器里改root密碼也行,不過這要用mysql客戶端,相對(duì)麻煩)
docker volume rm compose-demo_db_data代碼資源
https://gitee.com/pingfanrenbiji/compose-demo.git參考文獻(xiàn)
https://www.cnblogs.com/bear129/p/12523573.html