spring-boot项目的docker集成化部署(二)--springboot的mysql项目

spring-boot项目的docker集成化部署(二)–springboot的mysql项目
[toc]

补充使用maven构建操作流程

1、配置基本的环境

全局工具配置—配置Java、maven、git基本工具(注意:按照自己的路径安装即可)

《spring-boot项目的docker集成化部署(二)--springboot的mysql项目》 配置Jenkins基本环境

2、安装maven插件

插件管理—可选插件下载找到:Maven Integration plugin;等待安装成功后,就可以在新建maven的Jenkins工程。

3、构Jenkins自动构建工程

  • 点击“确定”后填写源码管理:

https://gitee.com/will-we/spring-boot_docker_demo.git

  • 填写构建环境,填写的maven命令和eclipse类似不用添“mvn”;最后保存工程并开始构建工程
  • 《spring-boot项目的docker集成化部署(二)--springboot的mysql项目》 执行maven命令
    clean package docker:build
    

4、手动部署dockers镜像

构建成功后,会看到之前的一样的工程镜像。执行如下命令

docker run --name= springboot/spring-boot_docker_demo -p 8081:8080 -t srping-demo

基于mysql的Springboot的docker工程

  1. 编写开发工程,这里使简单CRUD为例;具体项目参考如下路径:

https://gitee.com/will-we/spring-boot_docker_demo/tree/efa2989ba61bf4857559943adf697253e472526d/

需要注意:这里使用的多环境配置。

《spring-boot项目的docker集成化部署(二)--springboot的mysql项目》 Springboot多环境配置

  1. 安装之前的构建步骤开始重新构建doker镜像

    《spring-boot项目的docker集成化部署(二)--springboot的mysql项目》 查看docker镜像

  2. 开始手动部署,操作命令如下

启动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 

《spring-boot项目的docker集成化部署(二)--springboot的mysql项目》 启动Springboot项目

《spring-boot项目的docker集成化部署(二)--springboot的mysql项目》 springboot运行结果

#补充docker命令说明:
-v 主机的目录作为容器的数据卷
-e 设置启动容器是的环境变量
-t 分配terminal终端
--name 设置容器名称
-p  端口映射,格式为:主机(宿主)端口:容器端口
-link 添加链接到另一个容器

重要问题记录

docker容器的持久化数据问题:

关于docker数据持久化的三种方式:

  • volumes,
  • bind mounts
  • tmpfs mounts

这里使用bind mounts的方式;具体的差异和介绍参考如下链接

Springboot程序链接出现错误,关于应用使用“mysql”镜像的,网络连接问题

《spring-boot项目的docker集成化部署(二)--springboot的mysql项目》 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

《spring-boot项目的docker集成化部署(二)--springboot的mysql项目》 docker启动是出现异常

  1. 问题分析
    可能原因由于在重启了网络配置影响到了docker的端口映射;从而导致如上的原因。
  2. 解决方案

重新启动docker的服务。

Systemctl restart docker

启动mysql容器时,无法使用远程连接

《spring-boot项目的docker集成化部署(二)--springboot的mysql项目》 连接mysql出错

《spring-boot项目的docker集成化部署(二)--springboot的mysql项目》 mysql的版本

  1. 原因分析:
    MySQL连接2059错误,修改加密规则
    大概的意思是;安装的mysql的版本新版本mysql8.0;修改了加密方式导致。
  2. 解决方式
    方案一:安装mysql5.7版本
docker run -d \
    --name mybatis-mysql \
    -p 3306:3306 \
    -e MYSQL_ROOT_PASSWORD=123456 \
    mysql:5.7
    原文作者:weir_will
    原文地址: https://www.jianshu.com/p/60ac9cc6d668
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞