使用gradle构建一个springboot工程并用docker部署在阿里云镜像容器仓库的镜像
这篇文章我们来整理一下如何使用gradle来构建一个spring boot工程,并使用docker打包一个镜像,使用阿里镜像容器服务实现镜像的版本管理以及利用镜像部署服务。
我们需要的材料是:gradle、maven、docker、阿里云镜像仓库、一个Linux环境。
一,构建spring工程
使用ide工具构建一个spring工程,我们这里简单点构建一个springboot工程,本次是为了讲解清楚docker相关的操作流程,所以我们构造一个简单的工程即可。
我构建的工程目录结构如图
我是用gradle来构建工程的,gradle文件如下:
println "######################[begin build script] Env:[$env] ######################"
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'com.palantir.docker'
apply plugin: 'java'
group = 'com.wlgdo.avatar'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
repositories {
mavenCentral()
}
bootJar {
project.group = "com.wlgdo"
baseName = 'avatar-web-docker'
version = '1.0'
}
docker {
dependsOn build
name "${bootJar.baseName}"
files bootJar.archivePath
buildArgs(['JAR_FILE': "${bootJar.archiveName}"])
println "###########JAR_FILE:-----${bootJar.archiveName}#############"
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
compile 'org.springframework.boot:spring-boot-starter-web:2.1.0.RELEASE'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
可能因为gradle版本的不同文件有差异,可根据具体错误来进行修改即可
二、添加docker文件
在主目录下添加dockerfile文件
FROM openjdk:8-jdk-alpine
VOLUME /root/tmp
ARG avatar-web-docker-1.0.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom"," jar","app.jar"]
其中:FROM指定基础镜像,必须为第一个命令
VOLUME:用于指定持久化目录
ARG:用于指定传递给构建运行时的变量
COPY:功能类似ADD,但是是不会自动解压文件,也不能访问网络资源
ENTRYPOINT:配置容器,使其可执行化。配合CMD可省去"application",只使用参数。
三、安装docker
docker的安装,因为我的win10home版,有些组建是不持支的,所以我直接就在我的Linux机上安装了,根据不用的Linux版本安装就行,比如我的是ubuntu,直接apt install docker就可以了,没有特殊情况,环境配置用默认就行,如需修改,参考网上资料即可
安装成功后,可以使用“docker images”来查看本地镜像列表,如图
也可以使用“docker run hello-world”来看是否成功。
如闪图所示,证明docker安装OK了
四、打包docker镜像,并上传到阿里云
- 第一步:使用gradle命令来打包docker
首先将远程代码下载到本地,进入到build.gradle文件目录中,执行打包命令:
gradle build:docker
如图示打包成功
2. 第二步:重命名镜像
docker tag [ImageId] [image-name]:[镜像版本号]
如图,我将我的最近镜像写为1.8版本
3. 第三步:上传docker Image到阿里云
申请阿里云的镜像库,至于怎么申请很简单的点击链接阿里云镜像
申请完成后,在服务端登陆即可
登陆命令“docker login --username=[username] registry.cn-beijing.aliyuncs.com”
登录成功后,使用命令“docker push registry.cn-beijing.aliyuncs.com/wlgdo/avatars:1.8”上传即可
坐等上传完成即可
打开阿里云镜像服务,可以找到1.8版本号的镜像记录。
五、下载使用docker镜像
其实最终的目的我们是要使用我们打包的docker镜像的,当我们把它放到镜像仓库的时候,之需在docker端下载下来,运行即可。
命令“docker push registry.cn-beijing.aliyuncs.com/wlgdo/avatar:1.8”
下载下来之后,运行指令“docker run registry.cn-beijing.aliyuncs.com/wlgdo/avatar:1.8”,
访问工程
工程正常启动,docker镜像部署完成。
至此,一个工程从开始到docker部署就全部完成了,这里面涉及到的gradle,docker的一些基本安装配置工作没有介绍,需要的同学可以先去查查资料或者可以找我。
需要源码的同学
上一篇: android原生JSON解析实例
下一篇: 有三个富人在比谁有钱