zoukankan      html  css  js  c++  java
  • 【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:Usersinghe.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:Workspacesinghe-starter	argetinghe-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:Workspacesinghe-starter	argetinghe-starter.jar to D:Maven_Repository.m2
    epositorycomingheinghe-starter1.0.0-SNAPSHOTinghe-starter-1.0.0-SNAPSHOT.jar
    [INFO] Installing D:Workspacesinghe-starterpom.xml to D:Maven_Repository.m2
    epositorycomingheinghe-starter1.0.0-SNAPSHOTinghe-starter-1.0.0-SNAPSHOT.pom
    [INFO] Installing D:Workspaces\binghe-starter	argetinghe-starter-docker-info.jar to D:Maven_Repository.m2
    epositorycomingheinghe-starter1.0.0-SNAPSHOTinghe-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:Usersinghe>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
    

    写在最后

    如果觉得文章对你有点帮助,请微信搜索并关注「 冰河技术 」微信公众号,跟冰河学习各种编程技术。

  • 相关阅读:
    HDU 4024 Dwarven Sniper’s hunting(数学公式 或者是二分)
    二分图最大匹配总结
    HDU 4022 Bombing (STL应用)
    HDU 1847 Good Luck in CET4 Everybody!(组合博弈)
    HDU 1556 Color the ball(树状数组)
    HDU 4023 Game(博弈)
    HDU 1406 完数(水题)
    HDU 4021 24 Puzzle
    Oracle 多表查询优化
    【编程之美】字符串移位包含的问题(续)
  • 原文地址:https://www.cnblogs.com/binghe001/p/12810675.html
Copyright © 2011-2022 走看看