SpringBoot打包镜像上传到Harbor

本文档详细记录了在Windows环境下,通过IDEA使用SpringBoot2.3.12.RELEASE创建应用,并配置Docker以连接远程CentOS7.8服务器上的Docker20.10.10,安装Harbor2.3.4,然后使用Dockerfile构建并将SpringBoot应用镜像推送到Harbor的过程,包括所有必要的步骤和配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

折腾了一天,总算成功了,记录一下。中间参考了很多人的博文,总是有这样或那样的问题,可能是大家的环境不一样,没说清楚。把我机子上成功的步骤和环境都记录一下,有图有真相。

环境说明

本机:Window10、IDEA 2021、SpringBoot 2.3.12.RELEASE

服务器:CentOS 7.8;Docker 20.10.10;Harbor 2.3.4

Docker安装

1、设置稳定的安装源(存储库)

yum install yum-utils -y

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

2、导入证书

rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-7

3、安装

yum list docker-ce --showduplicates | sort -r

yum install -y docker-ce-20.10.10 docker-ce-cli-20.10.10 containerd.io

4、启动

systemctl start docker

systemctl enable docker

5、验证

Docker version

Docker run hello-world

安装Harbor

安装 docker-compose

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

docker-compose –version

下载

harbor最新的2.3.4版

tar vxzf ***

cp harbor /usr/local/src/

修改配置

cd /usr/local/src/harbor

cp harbor.yml.tmpl harbor.yml

vi harbor.yml

修改 hostname为本机ip

修改端口号,我用的是6000

注释掉https

修改harbor_admin_password

修改data_volumn

安装

./install.sh

启动

cd /usr/local/src/harbor

docker-compose up –d

开机自启动

vi /usr/lib/systemd/system/harbor.service
[Unit]

Description=Harbor

After=docker.service systemd-networkd.service systemd-resolved.service

Requires=docker.service

Documentation=http://github.com/vmware/harbor


[Service]

Type=simple

Restart=on-failure

RestartSec=5

ExecStart=/usr/local/bin/docker-compose -f /usr/local/src/harbor/docker-compose.yml up

ExecStop=/usr/local/bin/docker-compose -f /usr/local/src/harbor/docker-compose.yml down

[Install]

WantedBy=multi-user.target
chmod +x harbor.service
systemctl enable harbor

systemctl start harbor

#systemctl stop harbor

配置docker:

vi /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock --insecure-registry=http://192.188.1.246:6000

systemctl daemon-reload

systemctl restart docker

Web界面访问

http://192.188.1.246:6000

下载java8镜像

在服务器上把java 8的镜像下载下来,这是后面打包的基础镜像。

docker pull java:8

Windows下配置

Windows下不用安装docker,直接用服务器上的2375端口的。

环境变量

设置环境变量:DOCKER_HOST : tcp://ip:2375

 重启Windows,使环境变量的修改生效。

windows下的Maven设置

/conf/settings.xml文件 servers中加入

<server>
 <id>192.188.1.246:6000</id>
 <username>admin</username>
 <password>Harbor12345</password>
</server>

代码

pom

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.3.12.RELEASE</version>
            </plugin>
        </plugins>
    </pluginManagement>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>dockerfile-maven-plugin</artifactId>
            <version>1.4.13</version>
            <executions>
                <execution>
                    <id>default</id>
                    <goals>
                        <!--如果package时不想用docker打包,就注释掉这个goal-->
                        <goal>build</goal>
                        <goal>push</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <!-- 上下文路径配置,此处设置为项目根路径 用来读取Dockerfile-->
                <contextDirectory>${project.basedir}</contextDirectory>
                <!--使用Maven的setting.xml来配置账号密码-->
                <useMavenSettingsForAuth>true</useMavenSettingsForAuth>
                <!--上传路径/镜像构建名: Harbor地址/Harbor项目名/springboot项目名-->
                <repository>192.188.1.246:6000/library/${project.artifactId}</repository>
                <!-- 标签,最终会显示在Harbor镜像的标签中 -->
                <tag>${project.version}</tag>
                <!-- 作为Dockerfile 文件传入,也就是Dockerfile 中 ARG JAR_FILE的值-->
                <buildArgs>
                    <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
                </buildArgs>
            </configuration>
        </plugin>
    </plugins>
</build>

Dockerfile放在程序根目录下,跟src、target同一级

# 添加 Java 8 镜像来源
FROM java:8

# 添加参数
ARG JAR_FILE

# 添加 Spring Boot 包
ADD target/${JAR_FILE} app.jar

# 执行启动命令
ENTRYPOINT ["java","-jar","/app.jar"]

然后就可以打包、上传

上传成功

源代码地址

最后,源代码公布出来,删除了业务代码,保留了pom等打包设置。

https://download.youkuaiyun.com/download/xuruilll/57101243https://download.youkuaiyun.com/download/xuruilll/57101243https://download.youkuaiyun.com/download/xuruilll/57101243

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值