docker harbor搭建并集成maven推送镜像

1、docker harbor搭建和使用(参考docker harbor搭建和使用

(1) 官网获取 https://github.com/goharbor/harbor/releases harbor下载地址
eg.https://github.com/goharbor/harbor/releases/download/v2.7.0-rc1/harbor-offline-installer-v2.7.0-rc1.tgz
服务器

wget https://github.com/goharbor/harbor/releases/download/v2.7.0-rc1/harbor-offline-installer-v2.7.0-rc1.tgz

(2) 编辑 harbor.yml.tmpl

hostname 这个是域名,需要修改成大家公司自己的域名,如果是自己测试,可以随便填个域名,然后在/etc/hosts中解析域名到127.0.0.1就好
http.port 这个是端口,默认是80,一般不改,除非80端口被占用了
https 这个是https配置,需要提供SSL证书,如果是自己生成的证书,需要在docker配置文件中设置insecure-registries,否则docker会认为这是不安全的域名,下文会说,等会自己生成一个证书再回来修改
harbor_admin_password 这是harbor提供的管理后台的管理员密码
database 这个节点下面的配置是harbor自己依赖的数据库密码以及连接参数
data_volume 这是harbor数据存储的目录,不用修改,之后可以在docker-compose.yml中挂载宿主机目录,只要记住这个目录就好

(3) 下载镜像并生成docker-compose

mv harbor.yml.tmpl harbor.yml
./install.sh

安装完成后会在当前目录生成一些文件,其中有一个眼熟的文件docker-compose.yml,说明安装之后停止harbor可以用docker-compose down,再次启动harbor可以用docker-compose up -d命令,修改容器配置可以编辑docker-compose.yml文件

(4) 登录
用户名admin,密码是在harbor.yml中配置的

(5) 创建用户和项目

2、开启服务器docker远程连接

(1) 增加 -H tcp://0.0.0.0:2375

vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375  -H fd:// --containerd=/run/containerd/containerd.sock

(2) 重启docker

systemctl daemon-reload  
systemctl restart docker

(3) 关闭防火墙或者开放2375端口

3、docker登录harbor,验证远程

没有配置证书,或者证书是个人生成的情况下

vim  /etc/docker/daemon.json

加入以下内容

##配置了域名的最好使用域名
{
"insecure-registries":["ip:port","域名:port"]
}
docker login 域名:port #docker login ip:port 

登录成功后,就可以使用docker推送镜像到私人仓库

4、配置插件docker-maven-plugin

在maven的setting.xml中配置harbor账号与密码


  <server>
    <id>harbor</id>
    <username>username</username>
    <password>paswd</password>
    <configuration>
      <email>xxx</email>
    </configuration>
  </server>
  </servers>

java pom.xml 配置插件docker-maven-plugin


    <properties>
        <java.version>14</java.version>
        <!-- harbor远程地址-->
        <docker.repository>ip:8080</docker.repository>
        <!--项目名,需要和Harbor中的项目名称保持一致 -->
        <docker.registry.name>project</docker.registry.name>
        <docker.host>http://ip:2375</docker.host>
     </properties>

  <build>
        <plugins>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.2</version>
              <!--  <executions>
                    <execution>
                        <id>build-image</id>
                        <phase>package</phase>
                        <goals>
                            <goal>removeImage</goal>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>-->
                <configuration>
                    <!-- maven settings.xml 文件配置的server-id,配置server就可以直接推送到harbor repository仓库了 -->
                    <serverId>harbor</serverId>
                    //Harbor地址
                    <registryUrl>http://${docker.repository}</registryUrl>
                    <!-- 这是docker的服务地址,http:ip:2735-->
                    <dockerHost>${docker.host}</dockerHost>
                    <forceTags>true</forceTags>
                    <imageName>${docker.repository}/${docker.registry.name}/${project.artifactId}:${project.version}
                    </imageName>
                    <!-- 指定 Dockerfile 路径,此路径根据自己的文件路径调试,他正确才会有打包镜像日志输出,否则会卡住-->
                    <dockerDirectory>${project.basedir}/../docker</dockerDirectory>
                    <image>${docker.repository}/${docker.registry.name}/${project.artifactId}:${project.version}</image>
                    <newName>${docker.repository}/${docker.registry.name}/${project.artifactId}:${project.version}
                    </newName>
                    <!-- jar包位置-->
                    <resources>
                        <resource>
                            <targetPath>/config</targetPath>
                            <!--jar 包所在的路径  此处配置的 即对应 target 目录-->
                            <directory>${project.basedir}/src/main/resources</directory>
                            <include>bootstrap.yml</include>
                        </resource>
                        <resource>
                            <targetPath>/</targetPath>
                            <!--jar 包所在的路径  此处配置的 即对应 target 目录-->
                            <directory>${project.build.directory}</directory>
                            <!-- 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 -->
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>

创建dockerfile docker/dockerfile

FROM adoptopenjdk/openjdk14:latest ##根据自己的jdk版本配置,在docker查询镜像即可
MAINTAINER money
#将maven构建好的jar添加到镜像中,第二个为别名
ADD  *.jar cloud-app.jar
ADD  config config
EXPOSE 8080
##指定配置文件,方便在容器中运行时挂载配置文件路径
ENTRYPOINT ["java","-jar", "cloud-app.jar", "--spring.config.location= /config/bootstrap.yml"] 

5、说明

maven推送镜像到harbor的过程就是,通过maven把镜像推送到远程的docker,再由远程docker推送镜像到私人仓库

Docker、Jenkins、GitLab、MavenHarborSpring Boot是一些常用的IT工具和技术,可以用于实现自动化构建和部署。 Docker是一个开源的容器化平台,可以将应用程序及其依赖项打包到容器中,从而实现应用程序的快速部署和隔离。使用Docker可以方便地创建、分享和管理应用程序的容器化版本。 Jenkins是一个开源的持续集成和持续交付工具,可以帮助团队自动化构建、测试和部署应用程序。使用Jenkins可以通过配置和管理各种构建和部署任务,从而实现自动化的软件开发流程。 GitLab是一个基于Git的代码托管和协作平台,可以帮助团队协同开发、管理代码和进行版本控制。使用GitLab可以方便地管理代码仓库、进行代码审查和版本管理。 Maven是一个软件项目管理和构建工具,可以帮助团队自动化构建、测试和部署Java项目。使用Maven可以方便地管理项目依赖、编译代码、运行单元测试等构建任务。 Harbor是一个开源的企业级Docker镜像仓库,用于管理和存储Docker镜像。使用Harbor可以方便地管理镜像推送、拉取和版本控制。 Spring Boot是一个轻量级的Java开发框架,可以帮助开发者快速构建和部署基于Spring的应用程序。使用Spring Boot可以简化项目配置和管理,提高开发效率。 将这些工具结合使用,可以实现自动化构建和部署。例如,可以使用Jenkins配置一个定时任务,当代码提交到GitLab时,Jenkins会自动触发构建任务。构建任务可以使用Maven编译、打包和测试应用程序,然后使用Docker将应用程序打包成容器镜像,并推送Harbor中。最后,使用Docker将应用程序部署到服务器上进行运行。这样,我们就可以实现应用程序的自动化构建和部署,提高开发和交付效率。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值