SpringCloudAlibaba通过jib插件打包发布到docker仓库
序言
在SpringBoot项目部署的时候,我了解到了Jib插件的强大,这个插件可以快速构建镜像发布到我们的镜像仓库当中去。于是我打算在毕设当中加上这个功能,并且整合到github actions中去。
阻碍
在单体地狱的项目中,我们使用jib插件十分的方便,只需要在项目文件夹下运行命令:mvn complie jib:build
就可以完成镜像的构建并且推送到仓库。详情见:jib-maven-plugin构建镜像
可是这种方法在SpringCloud这种多模块化项目当中肯定是无法实现的。假设当前maven工程是父子结构的,有两个子工程A和B,其中A是二方库,提供一个jar包,里面是接口类和Bean类,B是springboot应用,并且B的源码中用到了A提供的接口和Bean;上述父子结构的maven工程是常见的工程结构,此时如果要将B构建成Docker镜像,在B的目录下执行mvn compile jib:build
显然是不行的,因为没有编译构建A,会导致B的编译失败;
解决办法
此时最好的做法就是将jib
与mvn
构建的生命周期绑定,修改B的pom.xml
文件,加入executions
节点;
父工程目录下执行mvn package
,此时maven
会先编译构建整个工程,然后再将B工程的构建结果制作成镜像;
实例
一、目录结构
这是我的SpringCloud
项目的目录结构,我们需要修改的内容为需要发布到仓库的服务的pom
文件,例如:
二、通过<executions>
节点绑定生命周期
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>jib-maven-plugin</artifactId>
<version>1.8.0</version>
<!-- executions start-->
<executions>
<execution>
<id>build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<!-- executions end-->
<configuration>
<from>
<image>registry.cn-hangzhou.aliyuncs.com/yhhu/jdk8</image>
</from>
<to>
<image>registry.cn-hangzhou.aliyuncs.com/2shop/user_provider</image>
</to>
<container>
<useCurrentTimestamp>true</useCurrentTimestamp>
<args>
<arg>--spring.profiles.active=prod</arg>
</args>
</container>
<allowInsecureRegistries>true</allowInsecureRegistries>
</configuration>
</plugin>
三、与github actions
整合,实现push
后自动构建镜像
github action文件如下:
name: Cloud CI
on:
push:
branches:
- master
pull_request:
jobs:
push_docker:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Set up JDK 1.8
uses: actions/setup-java@v1
with:
java-version: 1.8
server-id: registry.cn-hangzhou.aliyuncs.com
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
- name: Build
run: mvn package -q -B -V
env:
MAVEN_USERNAME: ${{secrets.DOCKER_USERNAME}}
MAVEN_PASSWORD: ${{secrets.DOCKER_PASSWORD}}
完全整合demo
SpringCloudAlibaba通过jib插件打包发布到docker仓库的更多相关文章
- 使用Maven插件快捷打包发布远程Docker镜像 dockerfile-maven-plugin
1.开放远程Docker远程访问端口 # vim /lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd -H tcp://0.0. ...
- maven学习(4)-本地项目打包发布到私有仓库
发布本地项目到私服仓库 在前面章节有介绍maven发布本地jar包到私服仓库,这里详细介绍一下步骤. 在项目开发中通常会引用其他的jar,怎样把自己的项目做为一个jar包的形式发布到私服仓库中,主要有 ...
- maven项目打包发布到私有仓库
在项目开发中通常会引用其他的jar,怎样把自己的项目做为一个jar包的形式发布到私服仓库中,主要有以下三个步骤 (怎样配置maven私服仓库,就不再这里说明了,可以参考以前的文章)1.在maven的s ...
- .NetCore下利用Jenkins如何将程序自动打包发布到Docker容器中运行
说道这一块纠结了我两天时间,感觉真的很心累,Jenkins的安装就不多说了 这里我们最好直接安装到宿主机上,应该pull到的jenkins版本是2.6的,里面很多都不支持,我自己试了在容器中安装的情况 ...
- 将自己的SpringBoot应用打包发布到Linux下Docker中
目录 将自己的SpringBoot应用打包发布到Linux下Docker中 1. 环境介绍 2. 开始前的准备 2.1 开启docker远程连接 2.2 新建SpringBoot项目 3. 开始构建我 ...
- 使用docker buildx打包发布多平台镜像
2022-07-07 个人比较喜欢影视作品,下载了大量的剧集视频,有些文件的命名不规范,就需要重新命名,之前是用的一款 renamer 客户端软件,用起来不太爽就自己做了个 bs 架构的重命名软件并开 ...
- (7/24) 插件配置之html文件的打包发布
从前面几节到现在,其实我们的项目结构是有问题的,因为我们直接把index.html文件放到了dist文件夹目录下.这肯定是不正确的,应该放到我们src目录下,然后打包到dist目录下,前面为了学习,才 ...
- 基于Vue3实现一个前端埋点上报插件并打包发布到npm
前端埋点对于那些营销活动的项目是必须的,它可以反应出用户的喜好与习惯,从而让项目的运营者们能够调整策略优化流程提高用户体验从而获取更多的$.这篇文章将实现一个Vue3版本的埋点上报插件,主要功能有 通 ...
- Spring Boot工程发布到Docker
先聊聊闲话 搞过企业级的application运维的同仁肯定深有感触,每个application的功能交叉错杂,数据交换就让人焦头烂额(当然这和顶层业务设计有关系), 几十个application发布 ...
随机推荐
- 为 Ubuntu 18.04 添加开机自动加载 ntfs分区 功能
注意:Ubuntu终端命令是区分大小写的 1,准备的: ntfs-3g -- 提供ntfs读写支持(一般说来是自带的,若没有,可是使用 sudo apt-get isntall ntfs-3g ...
- web项目的文件上传和 下载
文件上传和下载在web应用中非常普遍,要在jsp环境中实现文件上传功能是非常容易的,因为网上有许多用Java开发的文件上传组件,本文以commons-fileupload组件为例,为jsp应用添加文件 ...
- Python--day71--ORM分组补充
1,ORM映射对应的sql语句: 2,QuerySet QuerySet方法大全 ########################################################### ...
- Codeforces Round #187 (Div. 1 + Div. 2)
A. Sereja and Bottles 模拟. B. Sereja and Array 维护全局增量\(Y\),对于操作1(即\(a_{v_i}=x\))操作,改为\(a_{v_i}=x-Y\). ...
- SpringBoot项目改变图片临时文件的存储路径
springboot项目,部署到服务器后,运行一段时间后,处理文件上传的接口时,后报异常. Could not parse multipart servlet request; nested exce ...
- MySQL面试(二)
1.为什么索引遵循最左匹配原则? 当B+树的数据项是符合的数据结构,比如(name,age,sex)的时候,B+树是按照从左到右的顺序建立搜索树的.比如当(张三,20,F)这样的数据来检索的时候,b+ ...
- linux Tasklets 机制
tasklet 类似内核定时器在某些方面. 它们一直在中断时间运行, 它们一直运行在调度它 们的同一个 CPU 上, 并且它们接收一个 unsigned long 参数. 不象内核定时器, 但是, 你 ...
- 【t092】迷之阶梯
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 在经过地球防卫小队的数学家连续多日的工作之后,外星人发的密码终于得以破解.它告诉我们在地球某一处的古老 ...
- 闲来无事写一个jquery计算器,没有进行封装......
<!doctype html> <html> <head> <meta charset="utf-8" /> <title&g ...
- NuGet 如何设置图标
在找 NuGet 的时候可以看到有趣的库都有有趣的图标,那么如何设置一个 NuGet 的图标 在开始之前,请在nuget官方网站下载 NuGet.exe 同时设置环境变量 环境变量设置的方法就是将 N ...