使用Azure Devops构建java springboot项目,创建镜像并容器化部署

1、创建一个springboot项目,我用现有的项目

  • 目录结构如下,使用provider项目

  • 在根目录下添加Dockerfile文件,文件内容如下

  • 参考代码:
      # Docker image for springboot file run
    # VERSION 0.0.1
    # Author: xujk
    # 基础镜像使用java
    FROM java:8
    # 作者
    MAINTAINER xujk <xjk27400861@163.com>
    # VOLUME 指定了临时文件目录为/tmp。
    # 其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp
    VOLUME /tmp
    # 将jar包添加到容器中并更名为app.jar
    ADD target/provider-0.0.1-SNAPSHOT.jar app.jar
    # 运行jar包
    RUN bash -c 'touch /app.jar'
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"] #设置时区
    RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

2、在Devops创建项目,添加管道

  • 添加git代码仓库连接

  • 选择模板,maven项目

  • 选择Default代理池

  • 配置maven pom.xml文件的路径

  • 后面默认的设置即可,先测试打包功能

    运行管道,报错:在池 Default 中找不到满足指定要求的代理: maven, Agent.Version -gtVersion 2.144.0

    分析应该是代理池主机上,没有安装maven,安装maven,参考url:https://www.cnblogs.com/wqlken/p/14090525.html, 在代理主机上安装maven

  • 安装完后,还是不行,重启了一下虚拟机,运行管道,maven打包springboot项目

  • jar包重新构建完成

  • 修改pom.xml文件配置,构建provider项目



    点击取消链接,修改pom.xml文件路径,改为构建provider,重新下构建打包,成功

  • 添加一个作业,生成docker镜像,并推送到镜像服务器

  • 运行管道,构建镜像并推送到docker hub上

  • 添加删除镜像步骤,脚本可参考前面两篇构架.netcore的文章

    注意:镜像名称都是小写,不知为何名称指定有大写,但是生成完只会都变成小写



    运行完之后,就只剩下最新的镜像了,老版本都已删除

3、新建发布管道,部署应用

  • 新建一个空作业

  • 配置好项目

  • 写入发布脚本

  • 脚本参考
      #!/bin/bash
    name="springboot01"
    cid=`docker inspect --format '{{.Id}}' ${name} 2>/dev/null`
    if [[ ${#cid} -gt 0 ]]; then
    docker stop $name
    docker rm $name
    echo "successed deleted container ${name}"
    fi
    imageid=`docker images --format {{.ID}} $name`
    echo "准备删除旧镜像${imageid}"
    if [[ ${#imageid} -gt 0 ]]; then
    docker rmi -f $imageid
    echo "successed deleted old image ${name}"
    fi
    docker pull docker.io/xjk27400861/springbootapp:$(Build.BuildId)
    docker tag docker.io/xjk27400861/springbootapp:$(Build.BuildId) springbootapp:$(Build.BuildId)
    docker run -it -d -p 8003:8080 --name springboot01 --privileged=true springbootapp:$(Build.BuildId)
    docker logs springboot01
  • 发布,部署应用

  • 访问服务:http://192.168.231.139:8003/hello

  • 部署成功

Azure Devops实践(5)- 构建springboot项目打包docker镜像及容器化部署的更多相关文章

  1. BI系统打包Docker镜像及容器化部署的具体实现

    在过去的几年中,"云"作为明星热词站在了各种新潮技术之中,你可能使用过,但说不清它的原理:或者是没用过,但听过它的大名:也可能连它的名字都没听过,但你对这只蓝色鲸鱼一定十分眼熟.作 ...

  2. springboot项目打包docker镜像maven插件

    <!-- profile docker config --> <profiles> <profile> <id>docker</id> &l ...

  3. 【Docker】Maven打包SpringBoot项目成Docker镜像并上传到Harbor仓库(Eclipse、STS、IDEA、Maven通用)

    写在前面 最近,在研究如何使用Maven将SpringBoot项目打包成Docker镜像并发布到Harbor仓库,网上翻阅了很多博客和资料,发现大部分都是在复制粘贴别人的东西,没有经过实践的检验,根本 ...

  4. 将php项目打包docker镜像

    简介:有时候我们需要将php的项目打包成docker镜像,这里介绍下 思路:我们php和apache结合一个镜像实现php项目的访问,mysql是一个单独的镜像 步骤: 1.首先我们在本地测试好自己的 ...

  5. 构建Springboot项目、实现简单的输出功能、将项目打包成可以执行的JAR包(详细图解过程)

    1.构建SpringBoot项目 大致流程 1.新建工程 2.选择环境配置.jdk版本 3.选择 依赖(可省略.后续要手动在pom文件写) 4.项目名 1.1 图解建立过程 1.2 项目结构 友情提示 ...

  6. 用gradle把springboot项目打包成jar

    ``` 用gradle把springboot项目打包成jar ```### build.gradle 中添加 buildscript { repositories { mavenLocal() mav ...

  7. springboot项目打包运行

    在springboot项目打包成jar包时,在cmd中使用java -jar **.jar时,浏览器无法访问. 解决方法:把项目改成war包项目,在pom文件中更改,并打成war包. 使用maven命 ...

  8. SpringBoot 项目打包后运行报 org.apache.ibatis.binding.BindingException

    今天把本地的一个SpringBoot项目打包扔到Linux服务器上,启动执行,接口一访问就报错,但是在本地Eclipse中启动执行不报错,错误如下: org.apache.ibatis.binding ...

  9. SpringBoot项目打包成jar后,启动脚本

    将springboot项目打包成jar后,上传至服务器,每次都需要手敲命令,重新部署项目,可将这些命令写入脚本中,直接运行. 启动脚本(start.sh): CUR_PATH=$(cd "$ ...

随机推荐

  1. 分布式ID生成器及redis,etcd分布式锁

    分布式id生成器 有时我们需要能够生成类似MySQL自增ID这样不断增大,同时又不会重复的id.以支持业务中的高并发场景.比较典型的,电商促销时,短时间内会有大量的订单涌入到系统,比如每秒10w+.明 ...

  2. ☕【Java技术指南】「难点-核心-遗漏」Java线程状态流转及生命周期的技术指南(知识点串烧)!

    前提介绍 本章主要介绍相关线程声明周期的转换机制以及声明周期的流转关系以及相关AQS的实现和相关的基本原理,配合这相关官方文档的中英文互译的介绍. 线程状态流转及生命周期 当线程被创建并启动以后,它既 ...

  3. 批量修改Linux密码脚本(Python)

    搭建环境 centos 7.4 使用脚本 python 批量修改connect用户的密码 生成密码为随机密码 保存为xls文档 #!/usr/bin/env python # -*- coding: ...

  4. 面试官:Redis的事务满足原子性吗?

    原创:码农参上(微信公众号ID:CODER_SANJYOU),欢迎分享,转载请保留出处. 谈起数据库的事务来,估计很多同学的第一反应都是ACID,而排在ACID中首位的A原子性,要求一个事务中的所有操 ...

  5. QT之ARM平台的移植

      在开发板中运行QT程序的基本条件是具备QT环境,那么QT的移植尤为重要,接下载我将和小伙伴们一起学习QT的移植. 一.准备材料 tslib源码 qt-everywhere-src-5.12.9.t ...

  6. 不写注释的程序员-Models

    Models 不写注释的程序员-Models # This is an auto-generated Django model module. # You'll have to do the foll ...

  7. CSS004. 自定义滚动条样式(webkit)

    CSS /* 滚动条宽度 */ ::-webkit-scrollbar { width: 6px; } /* 轨道样式 */ ::-webkit-scrollbar-track { backgroun ...

  8. view+element+java登陆验证码

    一.前端: 1.页面标签: <el-row :gutter="20"> <el-col :span="24"> <el-input ...

  9. 使用Vue制作了一个计算机网络中子网划分部分的简陋计算工具

    前端新手请多关照~~~~ 上个学期学校开了计算机网络的课, 上到子网划分部分时, 各种计算虽然不然但是足够让人眼花缭乱 于是就想着自己写一个子网划分的小工具来辅助一下, 在一些简单的题目测试后没什么问 ...

  10. 关于golang结束了编程风格中对于左大括号要不要换行之争.

    golang规定了左大括号必须紧跟在语句后面,这样一下子就结束了各种代码风格之争. 其实golang是继承了早期的C语言,为了节省空间,才将左括号放到代码后面. 哪种编码风格是你的"菜&qu ...