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搭建!还有不明白的,可以评论讨论。

GitHub 加速计划 / ha / harbor
23.24 K
4.68 K
下载
Harbor 是一个开源的容器镜像仓库,用于存储和管理 Docker 镜像和其他容器镜像。 * 容器镜像仓库、存储和管理 Docker 镜像和其他容器镜像 * 有什么特点:支持多种镜像格式、易于使用、安全性和访问控制
最近提交(Master分支:2 个月前 )
9e55afbb pull image from registry.goharbor.io instead of dockerhub Update testcase to support Docker Image Can Be Pulled With Credential Change gitlab project name when user changed. Update permissions count and permission count total Change webhook_endpoint_ui Signed-off-by: stonezdj <stone.zhang@broadcom.com> Co-authored-by: Wang Yan <wangyan@vmware.com> 13 天前
3dbfd422 Signed-off-by: wang yan <wangyan@vmware.com> 13 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐