Spring boot项目打包上传到 Harbor镜像仓库


 最终目标上传到私有镜像仓库:

第一步:需要在springboot 项目中增加

pom

<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<!--镜像名:建议 仓库仓库地址 + 镜像文件夹 + 项目名字-->
<imageName>10.100.20.243:8003/duoyuanhua/${project.artifactId}:${project.version}</imageName>
<!--dockerfile 所在地址-->
<dockerDirectory>src/main/docker</dockerDirectory>
<!--仓库地址-->
<dockerHost>http://10.100.20.243:2375</dockerHost>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>

 dockerfile

FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD marketing-1.0-SNAPSHOT.jar app.jar
RUN sh -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

执行命令:

mvn clean package docker:build -Dmaven.test.skip=true

报错:

[INFO] --- docker-maven-plugin:0.4.13:build (default-cli) @ marketing ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 41.779 s
[INFO] Finished at: 2021-04-15T18:27:11+08:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.spotify:docker-maven-plugin:0.4.13:build (default-cli) on project marketing: Exception caught: basedir duoyuanhua does not exist -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

需要去docker开通tcp传输:

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

-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

保存,在重启docker 

systemctl daemon-reload //重新读取配置文件
systemctl restart docker //重新启动服务
lsof -i:2375 // 查看2375端口是否开启
netstat antlp | grep 2375 // 也可以查看

再次执行打包:

mvn clean package docker:build -Dmaven.test.skip=true

[INFO] Building image 10.100.20.243:8003/duoyuanhua/marketing:1.0-SNAPSHOT
Step 1/6 : FROM openjdk:8-jdk-alpine

Pulling from library/openjdk
e7c96db7181b: Pull complete
f910a506b6cb: Pull complete
c2274a1a0e27: Pull complete
Digest: sha256:94792824df2df33402f201713f932b58cb9de94a0cd524164a0f2283343547b3
Status: Downloaded newer image for openjdk:8-jdk-alpine
 ---> a3562aa0b991
Step 2/6 : VOLUME /tmp

 ---> Running in b275b80536cd
Removing intermediate container b275b80536cd
 ---> a70730301d14
Step 3/6 : ADD marketing-1.0-SNAPSHOT.jar app.jar

 ---> 60e8e0444595
Step 4/6 : RUN sh -c 'touch /app.jar'

 ---> Running in a10c77ae8df7
Removing intermediate container a10c77ae8df7
 ---> 90d33150bbd8
Step 5/6 : ENV JAVA_OPTS=""

 ---> Running in 87194343392e
Removing intermediate container 87194343392e
 ---> e81694844c70
Step 6/6 : ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

 ---> Running in fad74a0f9b54
Removing intermediate container fad74a0f9b54
 ---> 6d7e6098bb8c
ProgressMessage{id=null, status=null, stream=null, error=null, progress=null, progressDetail=null}
Successfully built 6d7e6098bb8c
Successfully tagged 10.100.20.243:8003/duoyuanhua/marketing:1.0-SNAPSHOT
[INFO] Built 10.100.20.243:8003/duoyuanhua/marketing:1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:50 min
[INFO] Finished at: 2021-04-15T20:51:00+08:00
[INFO] ------------------------------------------------------------------------

已经上传到服务器的docker中,然后再docker run就可以了

 

接下来配置上传到docker-Harbor中,这样就可以多个服务器实现下载了。实现docker的能力,一处上传,多处运行。

 首先:修改本地maven的setting文件  注意:id就是在pom.xml中的serverId

<server>
  <id>docker-harbor</id>
  <username>admin</username>
  <password>Harbor12345</password>
  <configuration>
    <email>XXXXXXXXX</email>
  </configuration>
</server>

再折修改:

 <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>0.4.13</version>
                <configuration>
                    <!--镜像名:建议 仓库仓库地址 + 镜像文件夹 + 项目名字-->
                    <imageName>10.100.20.243:8003/duoyuanhua/${project.artifactId}:${project.version}</imageName>
                    <!--dockerfile 所在地址-->
                    <dockerDirectory>src/main/docker</dockerDirectory>
                    <!--仓库仓库地址-->
                    <!-- <dockerHost>http://10.100.20.243:2375</dockerHost> -->
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                    <!-- 以下两行是为了docker push到DockerHub使用的。 -->
                    <serverId>docker-harbor</serverId>
                    <registryUrl>http://10.100.20.243:8003</registryUrl>
                </configuration>
            </plugin>

执行命令:

mvn clean package docker:build  -DpushImage -Dmaven.test.skip=true

有可能会出现报错,用户名密码和邮箱错误,是因为harbor默认用户没有邮箱,需要登录进去,然后配置邮箱就可以了

 

 

成功:

  

Successfully tagged 10.100.20.243:8003/duoyuanhua/marketing:1.0-SNAPSHOT
[INFO] Built 10.100.20.243:8003/duoyuanhua/marketing:1.0-SNAPSHOT
[INFO] Pushing 10.100.20.243:8003/duoyuanhua/marketing:1.0-SNAPSHOT
The push refers to repository [10.100.20.243:8003/duoyuanhua/marketing]
5ff3647f4257: Pushed
6da399692abd: Pushed
ceaf9e1ebef5: Pushed
9b9b7f3d56a0: Pushed
f1b5933fe4b5: Pushed
1.0-SNAPSHOT: digest: sha256:09cf98dffd3419f292cbec090620efb4636e3b2462cda8ca68ab69e46b032b7c size: 1371
null: null
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:42 min
[INFO] Finished at: 2021-04-15T21:25:53+08:00
[INFO] ------------------------------------------------------------------------

 

 至此结束,本地springboot项目,打镜像到docker中,然后push到私有镜像仓库。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM