Springboot整合Harbor实现镜像上传
文章目录
前言
Springboot整合Harbor:
实现镜像上传至Harbor,docker-Swarm自动部署
一、环境准备
1、Springboot项目准备
*****已经默认你搭建好了Harbor并且配置好,可以使用docker login登陆
*****如果没有搭建Harbor可以看我上篇文章搭建Harbor:Harbor搭建以及简单使用
1、直接上pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com</groupId>
<artifactId>springboot_harbor</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot_harbor</name>
<description>Demo project for Spring Boot</description>
#注意这里的docker、Harbor相关名称、密码、ip换成你自己的Harbor的地址,用户密码 如果Harbor没有使用默认的80端口 则在ip后面需要加上端口 包括Harbor上的docker启动配置。
<properties>
<java.version>1.8</java.version>
<spring-boot.version>2.2.4.RELEASE</spring-boot.version>
<docker.registry>192.168.137.142</docker.registry>
<docker.plugin.version>0.32.0</docker.plugin.version>
<docker.username>admin</docker.username>
<docker.password>Harbor12345</docker.password>
<docker.namespace>library</docker.namespace>
<docker.host>http://192.168.137.142:2375</docker.host>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>${docker.plugin.version}</version>
<configuration>
<dockerHost>${docker.host}</dockerHost>
<registry>${docker.registry}</registry>
<authConfig>
<push>
<username>${docker.username}</username>
<password>${docker.password}</password>
</push>
</authConfig>
<images>
<image>
<name>${docker.registry}/${docker.namespace}/${project.name}:${project.version}</name>
<build>
<dockerFile>${project.basedir}/Dockerfile</dockerFile>
</build>
</image>
</images>
</configuration>
</plugin>
</plugins>
</build>
</project>
测试接口
package springboot_harbor.com;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 测试controller
*
* @author whr
* @date 2020/10/23 10:42
*/
@RestController
@RequestMapping("/harbor")
public class TestController {
@GetMapping
public String harbor(){
return "上传Harbor测试";
}
}
项目压缩包下载:springboot_harbor项目压缩文件 提取码:whrs
2、构建Java8镜像
百度网盘安装包获取jdk压缩包:点击获取网盘链接 提取码:whrs
安装包下载好上传至服务器:
#回到根目录 不用管此时在哪个文件夹下 按照命令执行
[root@localhost java]# cd /
[root@localhost /]# mkdir java
[root@localhost java]# cd /
[root@localhost /]# mkdir java
[root@localhost /]# cd java
[root@localhost java]# ls
jdk-8u261-linux-x64.tar.gz
[root@localhost java]# vim Dockerfile
###添加以下内容到Dockerfile中
FROM centos:7
MAINTAINER whr
ADD jdk-8u261-linux-x64.tar.gz /java/
ENV JAVA_HOME /java/jdk1.8.0_261
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
:wq 回车 保存退出
[root@localhost java]# docker build -t whr/jdk8:1.0.0 .
##查看构建的镜像
[root@localhost java]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
whr/jdk8 1.0.0 54979692cedf 3 minutes ago 556MB
##已经构建成功
3、上传构建好的jdk8镜像至Harbor
#Harbor ip地址记得改为自己的服务器地址
[root@localhost java]# docker tag whr/jdk8:1.0.0 192.168.137.142/library/jdk8:latest
[root@localhost java]# docker push 192.168.137.142/library/jdk8:latest
4、编写项目中Dockerfile
Dockerfile内容:
###FROM的地址就是刚才上传的jdk8镜像地址 构建的时候需要从Harbor拉取上传的jdk镜像
FROM 192.168.137.142/library/jdk8:latest
MAINTAINER whr
VOLUME /tmp
ADD target/*jar app.jar
ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]
5、打包上传至Harbor
maven clean
maven package
docker build
docker push
查看Harbor
已经上传成功!
如果上传出错,应该是你Harbor搭建问题和Docker Tcp 2375端口没打开,可以参照我的前一篇文章Harbor搭建!还有不明白的,可以评论讨论。