【Docker】Maven打包SpringBoot項目成Docker鏡像並上傳到Harbor倉庫(Eclipse、STS、IDEA、Maven通用)


寫在前面

最近,在研究如何使用Maven將SpringBoot項目打包成Docker鏡像並發布到Harbor倉庫,網上翻閱了很多博客和資料,發現大部分都是在復制粘貼別人的東西,沒有經過實踐的檢驗,根本解決不了問題,純屬扯淡。作為一個技術人,經過不斷的研究和實踐,終於實現了在Spring Tool Site中使用Maven將SpringBoot項目打包成Docker鏡像,並將鏡像文件上傳到Harbor倉庫。

注意:本文使用的SpringBoot開發環境是Spring Tool Site,IDEA開發環境對SpringBoot項目的打包操作和將Docker鏡像上傳到Harbor倉庫操作相同,大家也可參考此文章進行實現。

一、系統環境

1.服務器環境

操作系統為:CentOS-8-x86_64-1905-dvd1.iso

2.開發環境

Windows10操作系統

二、服務器安裝Docker環境

安裝Docker環境

1.添加阿里雲鏡像

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

2.安裝containerd

dnf install https://mirrors.aliyun.com/docker-ce/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.13-3.1.el7.x86_64.rpm

3.安裝Docker

yum install docker-ce docker-ce-cli

4.設置開機自啟Docker並啟動Docker

systemctl enable docker.service
systemctl start docker.service

5.查看Docker版本

[root@binghe ~]# docker version
Client: Docker Engine - Community
 Version:           19.03.8
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        afacb8b
 Built:             Wed Mar 11 01:27:04 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.8
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.17
  Git commit:       afacb8b
  Built:            Wed Mar 11 01:25:42 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

也可以將阿里雲Docker鏡像倉庫添加到/etc/docker/daemon.json文件中,如下所示。

{
          "registry-mirrors": ["https://zz3sblpi.mirror.aliyuncs.com"]
}

安裝docker-compose環境

1.下載docker-compose文件

curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose 

2.為docker-compose文件賦予可執行權限

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

3.查看docker-compose版本

[root@binghe ~]# docker-compose version
docker-compose version 1.25.5, build 8a1c60f6
docker-py version: 4.1.0
CPython version: 3.7.5
OpenSSL version: OpenSSL 1.1.0l  10 Sep 2019

三、服務器安裝Harbor私有倉庫

1.下載Harbor的離線安裝版本

wget https://github.com/goharbor/harbor/releases/download/v1.10.2/harbor-offline-installer-v1.10.2.tgz

2.解壓Harbor的安裝包

tar -zxvf harbor-offline-installer-v1.10.2.tgz

解壓成功后,會在服務器當前目錄生成一個harbor目錄。

3.修改Harbor的配置

注意:這里,我將Harbor的端口修改成了1180,如果不修改Harbor的端口,默認的端口是80。

(1)修改harbor.yml文件。

cd harbor
vim harbor.yml

修改的配置項如下所示。

hostname: 192.168.0.10
http:
  port: 1180
harbor_admin_password: binghe123

(2)修改docker-compose.yml文件

vim docker-compose.yml

修改的配置項如下所示。

ports:
      - 1180:80

(3)修改config.yml文件

cd common/config/registry
vim config.yml

修改的配置項如下所示。

realm: http://192.168.0.10:1180/service/token

(4)修改daemon.json文件

修改/etc/docker/daemon.json文件,沒有的話就創建,在/etc/docker/daemon.json文件中添加如下內容。

[root@binghe~]# cat /etc/docker/daemon.json
{
  "registry-mirrors": ["https://zz3sblpi.mirror.aliyuncs.com"],
  "insecure-registries":["192.168.0.12:1180"]
}

也可以在服務器上使用 ip addr 命令查看本機所有的IP地址段,將其配置到/etc/docker/daemon.json文件中。這里,我配置后的文件內容如下所示。

{
    "registry-mirrors": ["https://zz3sblpi.mirror.aliyuncs.com"],
    "insecure-registries":["192.168.0.0/16","172.17.0.0/16", "172.18.0.0/16", "172.16.29.0/16"]
}

4.安裝並啟動harbor

配置完成后,輸入如下命令即可安裝並啟動Harbor

[root@binghe harbor]# ./install.sh 

5.登錄Harbor並添加賬戶

安裝成功后,在瀏覽器地址欄輸入http://192.168.0.10:1180打開鏈接,如下圖所示。

輸入用戶名admin和密碼binghe123,登錄系統,如下圖所示

接下來,我們選擇用戶管理,添加一個管理員賬戶,為后續在Spring Tool Site中打包Docker鏡像和上傳Docker鏡像做准備。添加賬戶的步驟如下所示。

此處填寫的密碼為Binghe123。

點擊確定后,如下所示。

此時,賬戶binghe還不是管理員,此時選中binghe賬戶,點擊“設置為管理員”。

此時,binghe賬戶就被設置為管理員了。到此,Harbor的安裝就完成了。

如果安裝Harbor后,大家需要修改Harbor的端口,首先按照修改Harbor的配置的步驟修改Harbor的端口配置,將配置項中的1180端口修改成你需要的端口。接下來,需要重啟Docker和Harbor。

重啟Docker

systemctl daemon-reload
systemctl restart docker.service

重啟Harbor

[root@binghe harbor]# docker-compose down
Stopping harbor-log ... done
Removing nginx             ... done
Removing harbor-portal     ... done
Removing harbor-jobservice ... done
Removing harbor-core       ... done
Removing redis             ... done
Removing registry          ... done
Removing registryctl       ... done
Removing harbor-db         ... done
Removing harbor-log        ... done
Removing network harbor_harbor
 
[root@binghe harbor]# ./prepare
prepare base dir is set to /mnt/harbor
Clearing the configuration file: /config/log/logrotate.conf
Clearing the configuration file: /config/nginx/nginx.conf
Clearing the configuration file: /config/core/env
Clearing the configuration file: /config/core/app.conf
Clearing the configuration file: /config/registry/root.crt
Clearing the configuration file: /config/registry/config.yml
Clearing the configuration file: /config/registryctl/env
Clearing the configuration file: /config/registryctl/config.yml
Clearing the configuration file: /config/db/env
Clearing the configuration file: /config/jobservice/env
Clearing the configuration file: /config/jobservice/config.yml
Generated configuration file: /config/log/logrotate.conf
Generated configuration file: /config/nginx/nginx.conf
Generated configuration file: /config/core/env
Generated configuration file: /config/core/app.conf
Generated configuration file: /config/registry/config.yml
Generated configuration file: /config/registryctl/env
Generated configuration file: /config/db/env
Generated configuration file: /config/jobservice/env
Generated configuration file: /config/jobservice/config.yml
loaded secret from file: /secret/keys/secretkey
Generated configuration file: /compose_location/docker-compose.yml
Clean up the input dir
 
[root@binghe harbor]# docker-compose up -d
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating harbor-db   ... done
Creating redis       ... done
Creating registry    ... done
Creating registryctl ... done
Creating harbor-core ... done
Creating harbor-jobservice ... done
Creating harbor-portal     ... done
Creating nginx             ... done
 
[root@binghe harbor]# docker ps -a
CONTAINER ID        IMAGE                                               COMMAND                  CREATED             STATUS                             PORTS

四、Windows系統安裝並配置Docker

1.安裝Docker

在Windows上安裝Docker環境就比較簡單了,到Docker官網https://www.docker.com/products/ 下載Docker Desktop Installer.exe安裝包,直接雙擊安裝即可。

2.修改docker下載的鏡像存放到其他盤

(1)在D盤創建一個存放docker虛擬機的文件夾,如下面圖中所示:

(2)創建好以后,找到桌面右下角的docker圖標,在上面點右鍵,選擇settings,打開docker的設置界面。


(3)然后在docker的設置界面中點擊Resources選項下的ADVANCED設置選項,即高級設置。

(4)在高級設置中,我們可以看到有一個disk image location,即硬盤鏡像的存放位置。默認是在C盤,點擊旁邊的browse按鈕

(5)這個時候會彈出文件夾選擇窗口,依次找到此電腦->D盤->docker文件夾,然后點擊確定。然后回到設置界面,會看到鏡像文件的位置變成了我們設置的文件夾。點擊設置界面右下角的apply應用設置。

(6)選擇完成后,點擊右下角的Apple&Restart按鈕重啟Docker。

(7)重啟完成后,我們打開D盤的docker下的DockerDesktop文件夾,會發現docker的虛擬機文件已經轉移到了這個目錄。如下面圖中所示。在前面的經驗中我們已經說過,在windows平台上,docker是通過hyper-v打開一個docker虛擬機來提供docker服務。因此隨着你下載的鏡像越多,這個docker鏡像文件會越來越大。因此你一定要及時清理不使用的docker虛擬機里的鏡像。

3.打開本地Docker的2375端口

打開方式:右擊右下角的小鯨魚(我用的是docker for window),點擊settings如下圖

4.配置Docker

(1)在cmd命令行輸入如下ip config命令來查看本地的IP地址,如下所示。

(2)配置Docker

選擇Docker Engine選項,並在右側的文本框中輸入如下信息。

{
  "registry-mirrors": [
    "https://zz3sblpi.mirror.aliyuncs.com"
  ],
  "insecure-registries": [
    "192.168.0.0/16",
    "172.18.14.0/16"
  ],
  "debug": true,
  "experimental": false
}

如下圖所示。

五、配置Harbor

使用binghe賬號和密碼Binghe123登錄Harbor,並新建一個test項目。

此時,在Harbor中的項目就創建成功了。

六、SpringBoot項目配置Docker

創建SpringBoot項目比較簡單,我這里就不再贅述如何創建SpringBoot項目,我們直接從SpringBoot項目配置Docker開始說。

1.創建Dockerfile文件

在需要運行的maven模塊(SpringBoot啟動類所在的模塊)根目錄下創建Dockerfile文件,內容如下所示。

FROM java:8
MAINTAINER binghe
VOLUME /tmp
ADD target/*jar app.jar
ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]

2.修改pom.xml文件

在需要運行的maven模塊(SpringBoot啟動類所在的模塊)的pom.xml中增加以下配置。

<properties>
    <docker.repostory>192.168.0.10:1180</docker.repostory>
    <docker.registry.name>test</docker.registry.name>
    <docker.image.tag>1.0.1</docker.image.tag>
    <docker.maven.plugin.version>1.4.10</docker.maven.plugin.version>
</properties>

<build>
    <finalName>binghe-starter</finalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <!-- docker的maven插件,官網:https://github.com/spotify/docker‐maven‐plugin -->
        <!-- Dockerfile maven plugin -->
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>dockerfile-maven-plugin</artifactId>
            <version>${docker.maven.plugin.version}</version>
            <executions>
                <execution>
                    <id>default</id>
                    <goals>
                        <!--如果package時不想用docker打包,就注釋掉這個goal-->
                        <goal>build</goal>
                        <goal>push</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <contextDirectory>${project.basedir}</contextDirectory>
                <!-- harbor 倉庫用戶名及密碼-->
                <useMavenSettingsForAuth>useMavenSettingsForAuth>true</useMavenSettingsForAuth>
                <repository>${docker.repostory}/${docker.registry.name}/${project.artifactId}</repository>
                <tag>${docker.image.tag}</tag>
                <buildArgs>
                    <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE>
                </buildArgs>
            </configuration>
        </plugin>

    </plugins>

    <resources>
        <!-- 指定 src/main/resources下所有文件及文件夾為資源文件 -->
        <resource>
            <directory>src/main/resources</directory>
            <targetPath>${project.build.directory}/classes</targetPath>
            <includes>
                <include>**/*</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
</build>

其中,幾個重要的參數說明如下所示。

  • docker.repostory:Harbor倉庫的地址,ip:port
  • docker.registry.name:上傳的Docker鏡像前綴,此前綴一定要和Harbor中的項目名稱一致,表示打包后的Docker鏡像會上傳到Harbor的哪個項目中(重點,不然會報錯)。
  • docker.image.tag:Docker鏡像的標簽,也就是版本。
  • docker.maven.plugin.version:Docker Maven插件的版本。

七、配置Maven

首先,我們查看下Spring Tool Site中配置的Maven,如下所示。

在Maven的setting.xml文件中添加如下配置。

<!--配置權限,使用默認用戶-->
<servers>
    <server>
        <id>192.168.0.10:1180</id>       
        <username>binghe</username>
        <password>Binghe123</password>
    </server>
</servers>

其中,id就是Harbor倉庫所在的服務器IP地址和端口號,username就是Harbor的用戶名,password就是密碼。這里我使用的是binghe賬戶。

八、配置Docker的config.json文件

注意:這里是個重點,網上很多文章中沒有配置config.json文件,導致將Docker鏡像push到Harbor倉庫時拋出如下異常。

denied: requested access to the resource is denied

config.json文件在我電腦上所在的目錄為C:\Users\binghe\.docker。也就是說,它所在的目錄為C:\Users目錄下的當前用戶目錄下的.docker目錄下。如下所示。

我們打開config.json文件,將文件中的auths部分修改成如下所示。

"auths": {
		"192.168.0.10:1180": {"username":"itence_harbor", "password":"Itence123"}
	}

修改后的文件整體內容如下所示。

{
	"auths": {
		"192.168.0.10:1180": {"username":"itence_harbor", "password":"Itence123"}
	},
	"HttpHeaders": {
		"User-Agent": "Docker-Client/19.03.8 (windows)"
	},
	"credsStore": "desktop",
	"stackOrchestrator": "swarm"
}

注意:如果不存在config.json文件,就在相應的目錄下創建config.json文件,將上述配置寫入config.json文件中。

九、運行測試

1.構建Docker鏡像

在構建Docker鏡像之前,我們先來查看下本地Docker中的鏡像,如下所示。

可以看到,此時本地Docker中沒有任何鏡像。

接下來,在Spring Tool Site中,配置Maven Build,輸入如下命令。

clean install -Dmaven.test.skip=true

如下所示。

接下來,右鍵Maven的pom.xml文件,點擊Maven Build開始構建Docker鏡像,構建成功后命令行會輸出如下信息。

[INFO] Image will be built as 192.168.0.10:1180/test/binghe-starter:1.0.1
[INFO] 
[INFO] Step 1/5 : FROM java:8
[INFO] 
[INFO] Pulling from library/java
[INFO] Image 5040bd298390: Pulling fs layer
[INFO] Image fce5728aad85: Pulling fs layer
[INFO] Image 76610ec20bf5: Pulling fs layer
[INFO] Image 60170fec2151: Pulling fs layer
[INFO] Image e98f73de8f0d: Pulling fs layer
[INFO] Image 11f7af24ed9c: Pulling fs layer
[INFO] Image 49e2d6393f32: Pulling fs layer
[INFO] Image bb9cdec9c7f3: Pulling fs layer
[INFO] Image 60170fec2151: Waiting
[INFO] Image e98f73de8f0d: Waiting
[INFO] Image 11f7af24ed9c: Waiting
[INFO] Image 49e2d6393f32: Waiting
[INFO] Image bb9cdec9c7f3: Waiting
[INFO] Image fce5728aad85: Downloading
[INFO] Image 76610ec20bf5: Downloading
[INFO] Image 5040bd298390: Downloading
[INFO] Image fce5728aad85: Verifying Checksum
[INFO] Image fce5728aad85: Download complete
[INFO] Image 76610ec20bf5: Verifying Checksum
[INFO] Image 76610ec20bf5: Download complete
[INFO] Image 60170fec2151: Downloading
[INFO] Image 60170fec2151: Verifying Checksum
[INFO] Image 60170fec2151: Download complete
[INFO] Image e98f73de8f0d: Downloading
[INFO] Image e98f73de8f0d: Verifying Checksum
[INFO] Image e98f73de8f0d: Download complete
[INFO] Image 5040bd298390: Verifying Checksum
[INFO] Image 5040bd298390: Download complete
[INFO] Image 5040bd298390: Extracting
[INFO] Image 11f7af24ed9c: Downloading
[INFO] Image 11f7af24ed9c: Verifying Checksum
[INFO] Image 11f7af24ed9c: Download complete
[INFO] Image bb9cdec9c7f3: Downloading
[INFO] Image bb9cdec9c7f3: Verifying Checksum
[INFO] Image bb9cdec9c7f3: Download complete
[INFO] Image 49e2d6393f32: Downloading
[INFO] Image 5040bd298390: Pull complete
[INFO] Image fce5728aad85: Extracting
[INFO] Image fce5728aad85: Pull complete
[INFO] Image 76610ec20bf5: Extracting
[INFO] Image 76610ec20bf5: Pull complete
[INFO] Image 60170fec2151: Extracting
[INFO] Image 60170fec2151: Pull complete
[INFO] Image e98f73de8f0d: Extracting
[INFO] Image e98f73de8f0d: Pull complete
[INFO] Image 11f7af24ed9c: Extracting
[INFO] Image 11f7af24ed9c: Pull complete
[INFO] Image 49e2d6393f32: Verifying Checksum
[INFO] Image 49e2d6393f32: Download complete
[INFO] Image 49e2d6393f32: Extracting
[INFO] Image 49e2d6393f32: Pull complete
[INFO] Image bb9cdec9c7f3: Extracting
[INFO] Image bb9cdec9c7f3: Pull complete
[INFO] Digest: sha256:c1ff613e8ba25833d2e1940da0940c3824f03f802c449f3d1815a66b7f8c0e9d
[INFO] Status: Downloaded newer image for java:8
[INFO]  ---> d23bdf5b1b1b
[INFO] Step 2/5 : MAINTAINER binghe
[INFO] 
[INFO]  ---> Running in 5e56a3994a51
[INFO] Removing intermediate container 5e56a3994a51
[INFO]  ---> 88d9d9c903cf
[INFO] Step 3/5 : VOLUME /tmp
[INFO] 
[INFO]  ---> Running in 9a2a476fcb96
[INFO] Removing intermediate container 9a2a476fcb96
[INFO]  ---> a4590174575b
[INFO] Step 4/5 : ADD target/*jar app.jar
[INFO] 
[INFO]  ---> e9de2bd74c98
[INFO] Step 5/5 : ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]
[INFO] 
[INFO]  ---> Running in 13219282bd45
[INFO] Removing intermediate container 13219282bd45
[INFO]  ---> f6af061b2f2f
[INFO] [Warning] One or more build-args [JAR_FILE] were not consumed
[INFO] Successfully built f6af061b2f2f
[INFO] Successfully tagged 192.168.0.10:1180/test/binghe-starter:1.0.1
[INFO] 
[INFO] Detected build of image with id f6af061b2f2f
[INFO] Building jar: D:\Workspaces\binghe-starter\target\binghe-starter-docker-info.jar
[INFO] Successfully built 192.168.0.10:1180/test/binghe-starter:1.0.1
[INFO] 
[INFO] --- maven-install-plugin:2.5.2:install (default-install) @ binghe-starter ---
[INFO] Installing D:\Workspaces\binghe-starter\target\binghe-starter.jar to D:\Maven_Repository\.m2\repository\com\binghe\binghe-starter\1.0.0-SNAPSHOT\binghe-starter-1.0.0-SNAPSHOT.jar
[INFO] Installing D:\Workspaces\binghe-starter\pom.xml to D:\Maven_Repository\.m2\repository\com\binghe\binghe-starter\1.0.0-SNAPSHOT\binghe-starter-1.0.0-SNAPSHOT.pom
[INFO] Installing D:\Workspaces\\binghe-starter\target\binghe-starter-docker-info.jar to D:\Maven_Repository\.m2\repository\com\binghe\binghe-starter\1.0.0-SNAPSHOT\binghe-starter-1.0.0-SNAPSHOT-docker-info.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:55 min
[INFO] Finished at: 2020-04-30T12:23:46+08:00
[INFO] ------------------------------------------------------------------------

接下來,再次查看下本地Docker中的鏡像,如下所示。

C:\Users\binghe>docker images
REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE
192.168.0.10:1180/test/binghe-starter   1.0.1               f6af061b2f2f        4 minutes ago       720MB
java                                       8                   d23bdf5b1b1b        3 years ago         643MB

接下來,我們可以輸入如下命令運行Docker鏡像。

docker run -d -p 8088:8088 f6af061b2f2f

接下來,輸入命令docker ps 查看啟動的容器,如下所示。

可以看到,使用Spring Tool Site中的Maven構建的Docker鏡像運行成功。

2.將Docker鏡像推送到Harbor倉庫

在Spring Tool Site中將新增一項Maven Build,配置的命令如下所示。

dockerfile:push

接下來,右鍵pom.xml文件,選擇Maven Build,並選擇dockerfile:push選項,如下所示。

點擊OK按鈕,開始推送Docker鏡像到Harbor倉庫。

推送成功后,命令行會輸出如下信息。

[INFO] --- dockerfile-maven-plugin:1.4.10:push (default-cli) @ binghe-starter ---
[INFO] The push refers to repository [192.168.0.10:1180/test/binghe-starter]
[INFO] Image b5a229480eb5: Preparing
[INFO] Image 35c20f26d188: Preparing
[INFO] Image c3fe59dd9556: Preparing
[INFO] Image 6ed1a81ba5b6: Preparing
[INFO] Image a3483ce177ce: Preparing
[INFO] Image ce6c8756685b: Preparing
[INFO] Image 30339f20ced0: Preparing
[INFO] Image 0eb22bfb707d: Preparing
[INFO] Image a2ae92ffcd29: Preparing
[INFO] Image ce6c8756685b: Waiting
[INFO] Image 30339f20ced0: Waiting
[INFO] Image 0eb22bfb707d: Waiting
[INFO] Image a2ae92ffcd29: Waiting
[INFO] Image a3483ce177ce: Layer already exists
[INFO] Image 6ed1a81ba5b6: Layer already exists
[INFO] Image 35c20f26d188: Layer already exists
[INFO] Image c3fe59dd9556: Layer already exists
[INFO] Image a2ae92ffcd29: Layer already exists
[INFO] Image 30339f20ced0: Layer already exists
[INFO] Image 0eb22bfb707d: Layer already exists
[INFO] Image ce6c8756685b: Layer already exists
[INFO] Image b5a229480eb5: Pushing
[INFO] Image b5a229480eb5: Pushed
[INFO] 1.0.1: digest: sha256:174a170f229dd5a76fdf5a6fe7001a0066578334ada03edae699f4fb9537c3c5 size: 2212
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  31.002 s
[INFO] Finished at: 2020-04-30T13:21:32+08:00
[INFO] ------------------------------------------------------------------------

此時,我們在Harbor的test項目下會發現多了一個鏡像,如下所示。

十、特別說明

筆者是在Spring Tool Site中對SpringBoot項目構建Docker鏡像,並將Docker鏡像推送到Harbor倉庫,這樣方式同樣適用於IDEA環境,筆者不再贅述。

如果是使用命令行構建並推送Docker鏡像,需要在命令行登錄Harbor,命令如下。

docker login 192.168.0.10:1180
Username:binghe
password:Binghe123

接下來,在命令行輸入如下命令構建Docker鏡像。

mvn clean install -Dmaven.test.skip=true

將Docker鏡像推送到Harbor倉庫。

mvn dockerfile:push

也可以使用docker命令將Docker鏡像推送到Harbor倉庫,如下所示。

docker push 192.168.0.10:1180/test/binghe-starter:1.0.1

使用docker命令將Docker鏡像拉取到本地,如下所示。

docker pull 192.168.0.10:1180/test/binghe-starter:1.0.1

寫在最后

如果覺得文章對你有點幫助,請微信搜索並關注「 冰河技術 」微信公眾號,跟冰河學習各種編程技術。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM