美文网首页Docker容器征服Spring「初级篇」手把手docker学习
spring-boot项目的docker集成化部署(二)--sp

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

作者: weir_will | 来源:发表于2019-03-25 23:37 被阅读5次

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

    补充使用maven构建操作流程

    1、配置基本的环境

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


    配置Jenkins基本环境

    2、安装maven插件

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

    3、构Jenkins自动构建工程

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

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

    • 填写构建环境,填写的maven命令和eclipse类似不用添“mvn”;最后保存工程并开始构建工程
    • 执行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/

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

    Springboot多环境配置
    1. 安装之前的构建步骤开始重新构建doker镜像


      查看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 
    
    启动Springboot项目
    springboot运行结果
    #补充docker命令说明:
    -v 主机的目录作为容器的数据卷
    -e 设置启动容器是的环境变量
    -t 分配terminal终端
    --name 设置容器名称
    -p  端口映射,格式为:主机(宿主)端口:容器端口
    -link 添加链接到另一个容器
    

    重要问题记录

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

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

    • volumes,
    • bind mounts
    • tmpfs mounts

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

    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

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

    重新启动docker的服务。

    Systemctl restart docker
    

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

    连接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
    

    相关文章

      网友评论

        本文标题:spring-boot项目的docker集成化部署(二)--sp

        本文链接:https://www.haomeiwen.com/subject/pxgivqtx.html