如何不借助jenkins流畅完成本地构建并推送镜像

210 阅读1分钟

一、后端项目

SpringBoot项目

1.在pom.xml文件中的build标签下的plugin标签下引入docker插件

<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>插件版本</version>
    <configuration>
        <!-- 和maven setting中的配置的serverid 一致,根据这个去找harbor地址 -->
        <serverId>docker-harbor</serverId>
        <registryUrl>http://${docker.repostory}</registryUrl>
        <!--必须配置dockerHost标签(除非配置系统环境变量DOCKER_HOST)-->
        <dockerHost>http://${docker.host}</dockerHost>
        <!-- imageName 必须这么设置,可以改tag,不然没push 到harbor -->
        <imageName>${docker.repostory}/${docker.registry.name}/${project.artifactId}:${image.tag.verion}
        </imageName>
        <forceTags>true</forceTags>
        <!-- 指定 Dockerfile 路径-->
        <dockerDirectory>${basedir}</dockerDirectory>
        <!-- jar包位置-->
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <!-- target目录下-->
                <directory>${project.build.directory}</directory>
                <!--通过jar包名找到jar包-->
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
    </configuration>
</plugin>

2.在pom.xml文件中的properties标签下配置doker插件的具体属性配置

<!--docker镜像打包-->
<dockerfile-maven-plugin-version>插件版本</dockerfile-maven-plugin-version>
<!--docker插件-->
<image.name>镜像名</image.name>
<image.tag.verion>镜像标签版本</image.tag.verion>
<!-- Harbor对应的ip和port -->
<docker.repostory>harbor仓库地址</docker.repostory>
<!--项目名,需要和Harbor中的项目名称保持一致 -->
<docker.registry.name>项目名</docker.registry.name>
<docker.host>docker主机及端口号</docker.host>

3.创建并配置DockerFile

image.png

3.插件引入及配置完成后,依次进行清除clean、打包package、构建build、推送操作push

image.png

image.png

image.png

image.png

SpringCloud项目

SpringCloud项目中的使用与SpringBoot项目一样,但有几点需要注意的地方

1.docker插件和docker插件属性配置的放置位置

由于微服务中的子项目在服务器上是单独放置的,比如snow项目下的子项目snow-web和snow-restapi在服务器上并不是snow这一个服务,而是snow-web和snow-restapi两个服务,所以docker插件和docker插件属性配置的放置应该在子项目的pom.xml文件里。也就是说应该放在snow-web的pom.xml文件以及snow-restapi的pom.xml文件里,而不是snow项目的pom.xml文件里。放置完成后刷新maven,右侧的maven管理里的子项目下的Plugins一栏下就会出现docker 但其实snow项目下也是可以放置docker插件和docker插件属性配置的,但需要修改引入插件那一步配置dockerDirectory的路径和targetPath的路径,使jar包和Dockerfile都置于子项目下正确的位置

2.DockerFile文件

应注意DockerFile文件中的Harbor地址、环境、以及jar包位置 image.png

二、前端项目

一般来说前端项目没有pom.xml文件,所以需要我们用idea打开然后创建pom.xml文件
1.创建pom.xml文件
<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 http://maven.apache.org/maven-v4_0_0.xsd">
 <modelVersion>版本</modelVersion>
 <groupId>坐标</groupId>
 <artifactId>包名</artifactId>
 <version>版本</version>
 <name>名称</name>
 <url>地址</url>

 <properties>
   <!--docker镜像打包-->
   <dockerfile-maven-plugin-version>插件版本</dockerfile-maven-plugin-version>
   <!--docker插件-->
   <image.name>镜像名</image.name>
   <image.tag.verion>镜像标签版本</image.tag.verion>
   <!-- Harbor对应的ip和port -->
   <docker.repostory>harbor仓库地址</docker.repostory>
   <!--项目名,需要和Harbor中的项目名称保持一致 -->
   <docker.registry.name>项目名</docker.registry.name>
   <docker.host>docker主机及端口号</docker.host>
 </properties>

 <build>
   <plugins>
     <plugin>
       <groupId>com.spotify</groupId>
       <artifactId>docker-maven-plugin</artifactId>
       <version>插件版本</version>
       <configuration>
           <!-- 和maven setting中的配置的serverid 一致,根据这个去找harbor地址 -->
           <serverId>docker-harbor</serverId>
           <registryUrl>http://${docker.repostory}</registryUrl>
           <!--必须配置dockerHost标签(除非配置系统环境变量DOCKER_HOST)-->
           <dockerHost>http://${docker.host}</dockerHost>
           <!-- imageName 必须这么设置,可以改tag,不然没push 到harbor --> <imageName>${docker.repostory}/${docker.registry.name}/${project.artifactId}:${image.tag.verion}</imageName>
           <forceTags>true</forceTags>
           <!-- 指定 Dockerfile 路径-->
           <dockerDirectory>${basedir}</dockerDirectory>
           <!-- jar包位置-->
           <resources>
               <resource>
                   <targetPath>/</targetPath>
                   <!-- target目录下-->
                   <directory>${project.build.directory}</directory>
                   <!--通过jar包名找到jar包-->
                   <include>${project.build.finalName}.jar</include>
               </resource>
           </resources>
       </configuration>
   </plugin>
   </plugins>
 </build>
</project>
2.创建DockerFile文件并配置

这里有几点需要说明:前端项目用的是nginx,后端项目用的是openjdk;打包文件复制到默认路径上;nginx配置如需要请复制到nginx默认路径上;一般前端暴露的端口默认为80 image.png

3.插件引入及配置完成后,依次进行清除clean、打包package、构建build、推送操作push

image.png

image.png

image.png

image.png

注意:在本地构建和推送镜像的时候,要注意服务器是否开启公网访问,如果没有记得连vpn哦!