使用 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