spring-boot项目的docker集成化部署(二)--springboot的mysql项目
[toc]
补充使用maven构建操作流程
1、配置基本的环境
全局工具配置—配置Java、maven、git基本工具(注意:按照自己的路径安装即可)
2、安装maven插件
插件管理—可选插件下载找到:Maven Integration plugin
;等待安装成功后,就可以在新建maven的Jenkins工程。
3、构Jenkins自动构建工程
- 点击“确定”后填写源码管理:
- 填写构建环境,填写的maven命令和eclipse类似不用添“mvn”;最后保存工程并开始构建工程
-
clean package docker:build
4、手动部署dockers镜像
构建成功后,会看到之前的一样的工程镜像。执行如下命令
docker run --name= springboot/spring-boot_docker_demo -p 8081:8080 -t srping-demo
基于mysql的Springboot的docker工程
- 编写开发工程,这里使简单
CRUD
为例;具体项目参考如下路径:
https://gitee.com/will-we/spring-boot_docker_demo/tree/efa2989ba61bf4857559943adf697253e472526d/
需要注意:这里使用的多环境配置。
-
安装之前的构建步骤开始重新构建doker镜像
开始手动部署,操作命令如下
启动mysql容器
docker run -d \
--name mybatis-mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=root \
-v /home/weir/programs/data/mysql/springoot-mysql:/var/lib/mysql
mysql:5.7
# 运行Springboot的项目
docker run -it \
--name demo-springboot-docker \
--link mybatis-mysql:mybatis-mysql \
-p 8088:8081 \
-e DATABASE_HOST=mybatis-mysql \
-e DATABASE_PORT=3306 \
-e DATABASE_NAME=db_mydb \
-e DATABASE_USER=root \
-e DATABASE_PASSWORD=root \
springboot/spring-boot_docker_demo
#补充docker命令说明:
-v 主机的目录作为容器的数据卷
-e 设置启动容器是的环境变量
-t 分配terminal终端
--name 设置容器名称
-p 端口映射,格式为:主机(宿主)端口:容器端口
-link 添加链接到另一个容器
重要问题记录
docker容器的持久化数据问题:
关于docker数据持久化的三种方式:
- volumes,
- bind mounts
- tmpfs mounts
这里使用bind mounts的方式;具体的差异和介绍参考如下链接
Springboot程序链接出现错误,关于应用使用“mysql”镜像的,网络连接问题
在使用localhost:3306在docker容器中出现如下错误:这是由于docker容器随机映射导致。
使用–link之后,docker会在子容器(这里的spring boot容器)的/etc/hosts中将父容器(这里的mysql容器)与父容器的ip地址绑定,那么我们就可以mysql:3306来访问数据库了。也就是把application.properties中数据库url改为;如下命令通过环境变量配置:
docker run -it \
--name demo-springboot-docker \
--link mybatis-mysql:mybatis-mysql \
-p 8088:8081 \
-e DATABASE_HOST=mybatis-mysql \
-e DATABASE_PORT=3306 \
-e DATABASE_NAME=db_mydb \
-e DATABASE_USER=root \
-e DATABASE_PASSWORD=root \
springboot/spring-boot_docker_demo
docker端口映射或启动容器时报错Error response from daemon: driver failed programming external connectivity on endpoint quirky
- 问题分析
可能原因由于在重启了网络配置影响到了docker的端口映射;从而导致如上的原因。 - 解决方案
重新启动docker的服务。
Systemctl restart docker
启动mysql容器时,无法使用远程连接
- 原因分析:
MySQL连接2059错误,修改加密规则
大概的意思是;安装的mysql的版本新版本mysql8.0;修改了加密方式导致。 - 解决方式
方案一:安装mysql5.7版本
docker run -d \
--name mybatis-mysql \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7