最终目标上传到私有镜像仓库:
第一步:需要在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到私有镜像仓库。