Spring Boot配置docker-maven-plugin实现构建与推送镜像(Dockerfile)

这篇具有很好参考价值的文章主要介绍了Spring Boot配置docker-maven-plugin实现构建与推送镜像(Dockerfile)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0、前提:docker、 maven、java均已安装,docker 镜像私服均已设置网络也开通

本文基于Docker进行构建,也可以指定构建信息到 POM 中构建,大家自行搜索

1、首先是一些网络和docker相关配置的打开

2375是docker远程操控的默认端口,通过这个端口可以直接对远程的docker daemon进行操作;
任何能连通到这台docker宿主机的的机器都可以随意操作
这台docker宿主机的docker daemon(docker run、docker ps、docker rm等等这些命令)
推荐进行tls+CA证书配置进行远程操控,这里不赘述,可以自行baidu google
这里为了方便使用,使用非安全的方式试验

配置docker,开放2375端口
Docker的2375端口是默认关闭的,如果我们要使用到它,就需要进行以下的配置:

1、安装有docker的服务器,修改docker.service文件:

vi /etc/systemd/system/docker.service
具体文件所在地,得看你安装docker的位置,如果不知道自己安装在哪里了,执行以下指令去查找:
sudo find / -name docker.service

2、修改docker.service

找到文件以下内容:
ExecStart=/usr/bin/dockerd
修改为:
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

3、重启docker服务
systemctl daemon-reload
systemctl restart docker

2、针对maven 的 setting.xml 文件的修改

1、增加server配置,填充私服harbor的账号密码
 <server>
      <id>docker-hub</id>
      <username>admin</username>
      <password>Harbor12345</password>
    </server>

2、其余配置 和 maven本身配置自己私服没区别
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <pluginGroups>
  </pluginGroups>

  <proxies>
  </proxies>

 <servers>
    <server>
      <id>docker-hub</id>
      <username>admin</username>
      <password>Harbor12345</password>
    </server>
     <server>
      <id>nexus-central</id>
      <username>admin</username>
      <password>Aaaa1111</password>
    </server>
     <server>
      <id>releases</id>
       <username>admin</username>
      <password>Aaaa1111</password>
    </server>
     <server>
      <id>snapshots</id>
       <username>admin</username>
      <password>Aaaa1111</password>
    </server>
  </servers>

   
  <mirrors>
   <mirror>
  <id>nexus-public</id>
  <mirrorOf>*</mirrorOf>
  <name>Nexus central</name>
  <url>http://dev07.dfhamit.cn:8081/repository/maven-public</url>
</mirror>
<!--
   <mirror>
  <id>aliyunmaven</id>
  <mirrorOf>*</mirrorOf>
  <name>阿里云公共仓库</name>
  <url>https://maven.aliyun.com/repository/public</url>
</mirror>-->
</mirrors>
 
  <profiles>
  	<profile>
  		<id>nexus</id>
  		<repositories>
         <repository>
          <id>nexus</id>
          <url>http://dev07.dfhamit.cn:8081/repository/maven-public</url>
          <releases>
              <enabled>true</enabled>
          </releases>
          <snapshots>
              <enabled>true</enabled>
          </snapshots>
         </repository>
        </repositories>
        <pluginRepositories>
          <pluginRepository>
          <id>nexus</id>
          <url>http://dev07.dfhamit.cn:8081/repository/maven-public</url>
          <releases>
              <enabled>true</enabled>
          </releases>
          <snapshots>
              <enabled>true</enabled>
          </snapshots>
         </pluginRepository>
        </pluginRepositories>
        </profile>
  	<profile>
  		<id>aliyun</id>
        <repositories>
            <repository>
          <id>aliyun</id>
          <url>https://maven.aliyun.com/repository/spring</url>
          <releases>
              <enabled>true</enabled>
          </releases>
          <snapshots>
              <enabled>true</enabled>
          </snapshots>
            </repository>
        </repositories>
        <pluginRepositories>
            <pluginRepository>
          <id>aliyun</id>
          <url>https://maven.aliyun.com/repository/spring</url>
          <releases>
              <enabled>true</enabled>
          </releases>
          <snapshots>
              <enabled>true</enabled>
          </snapshots>
            </pluginRepository>
        </pluginRepositories>
      </profile>
  </profiles>
  
  <activeProfiles>
    <activeProfile>nexus</activeProfile>
   <!--  <activeProfile>aliyun</activeProfile>-->
  </activeProfiles>
</settings>

3、项目的pom文件,引入docker maven plugin 及相关配置

<!-- deploy 远程仓库 ,id与maven setting.xml中对应-->
    <distributionManagement>
        <repository>
            <id>releases</id>
            <name>dfham maven releases</name>
            <url>http://10.118.193.117:8081/repository/maven-releases/</url>
        </repository>
        <snapshotRepository>
            <id>snapshots</id>
            <name>dfham maven snapshots</name>
            <url>http://10.118.193.117:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.0.3.RELEASE</version>
                <configuration>
                    <executable>true</executable>
                    <!--springboot启动类目录 -->
                    <mainClass>com.dfham.perfma.PerfmaApplication</mainClass>
                    <!-- MAIN-CLASS:PropertiesLauncher,lib 外置 -->
                    <layout>ZIP</layout>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <!--创建一个自动可执行的jar或war文件 -->
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <!-- 跳过单元测试 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <configuration>
                    <nonFilteredFileExtensions>
                        <nonFilteredFileExtension>cert</nonFilteredFileExtension>
                    </nonFilteredFileExtensions>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.6</version>
            </plugin>

            <!-- https://blog.csdn.net/fly_duck/article/details/124709727 -->
            <!-- mvn package -Dmaven.test.skip=true && mvn docker:build -DpushImage -DdockerImageTags=$CI_COMMIT_REF_NAME -->
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.0</version>
                <!-- 绑定docker build 与 push 至 mvn deploy 阶段-->
                <!-- 不绑定可以mvn命令行 https://www.jianshu.com/p/39881a8c5a1d
                mvn clean package docker:build 只执行 build 操作
                mvn clean package docker:build -DpushImage 执行 build 完成后 push 镜像
                mvn clean package docker:build -DpushImageTag 执行 build 并 push 指定 tag 的镜像
                mvn clean package docker:build -DpushImageTags -DdockerImageTags=imageTag_1 -DdockerImageTags=imageTag_2 -->
                <executions>
                    <execution>
                        <id>build-push</id>
                        <phase>deploy</phase>
                        <goals>
                            <goal>build</goal>
                            <goal>push</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!-- 连接到 带docker环境的linux服务器 编译image -->
                    <dockerHost>http://localhost:2375</dockerHost>

                    <!-- push到 docker hub 开始 -->
                    <!-- serverId 这个是配置在maven的setting.xml中私服的登录账户信息-->
                    <serverId>docker-hub</serverId>
                    <retryPushCount>1</retryPushCount>
                    <retryPushTimeout>2000</retryPushTimeout>
                    <registryUrl>http://10.118.192.228</registryUrl>
                    <!-- 格式:私有仓库/镜像名称:版本号, 如果要执行push操作, 那么镜像名称必须为私有仓库为前缀,不然无效。-->
                    <imageName>10.118.192.228/zhoushun/${project.artifactId}:3.0</imageName>
                    <!-- push到 docker hub 结束 -->

                    <!-- 指定tag版本 imageName中拼接版本号即可,此字段可不用-->
<!--                    <imageTags>-->
<!--                        <imageTag>3.0</imageTag>-->
<!--                    </imageTags>-->
                    <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
                    <!-- optionally overwrite tags every time image is built with docker:build -->
                    <!-- <forceTags>true</forceTags>-->
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>

4、Dockerfile,默认放在项目 src/main/docker 下,其他位置会copy多余的东西

FROM 10.118.192.228/zhoushun/openjdk:8-jre-alpine
WORKDIR /opt/perfma
COPY perfma-test-2.2.jar /opt/perfma
EXPOSE 8080

RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories  && apk update
RUN apk add tzdata \
    && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
    && echo "Asia/Shanghai" > /etc/timezone

CMD ["java","-jar","perfma-test-2.2.jar"]

# mvn clean package docker:build docker:push
# mvn package -Dmaven.test.skip=true && mvn docker:build -DpushImage -DdockerImageTags=$CI_COMMIT_REF_NAME

# docker run -it -d -p 8080:8080 --name perfma3.0 10.118.192.228/zhoushun/perfma-test:3.0
# docker exec -it perfma3.0 /bin/sh

# 删除tag none 的镜像
# docker image prune

5、运行过程

springboot docker maven插件,容器-Docker&amp;K8s,SpringBoot-实战,docker,spring boot,maven

springboot docker maven插件,容器-Docker&amp;K8s,SpringBoot-实战,docker,spring boot,maven springboot docker maven插件,容器-Docker&amp;K8s,SpringBoot-实战,docker,spring boot,maven

springboot docker maven插件,容器-Docker&amp;K8s,SpringBoot-实战,docker,spring boot,maven

参考文章:

Docker基于Centos7构建JDK8镜像 (qq.com)

(1569条消息) 【docker的那些事】Dockerfile构建并推送到阿里云仓库_docker push 阿里云_陈橙橙丶的博客-CSDN博客

SpringBoot项目使用docker-maven-plugin插件构建docker镜像以及推送到docker hub或docker registry私服_OkidoGreen的博客-CSDN博客

(1570条消息) Spring Boot配置docker-maven-plugin实现构建与推送镜像_spring-boot-maven-plugin_明天再去学习的博客-CSDN博客 Docker-通过docker-maven-plugin插件实现docker镜像构建并自动发布到远程docker服务器 (bbsmax.com)

docker-maven-plugin - 简书 (jianshu.com)文章来源地址https://www.toymoban.com/news/detail-728353.html

到了这里,关于Spring Boot配置docker-maven-plugin实现构建与推送镜像(Dockerfile)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用docker-maven-plugin插件构建镜像并推送至私服Harbor

    如下所示,建议使用 Dockerfile Maven 插件,但该插件也停止维护更新了。因此先暂时使用 docker-maven-plugin 插件。 默认的dokcer是不支持远程访问的,需要加点配置,开启Docker的远程访问 确定docker配置文件位置在:/etc/systemd/system/docker.service 然后编辑修改docker配置文件: 找到包含

    2024年02月11日
    浏览(48)
  • SpringBoot项目使用docker-maven-plugin插件构建docker镜像以及推送到docker hub或docker registry私服

    我们知道docker可将应用程序和基础设施层隔离,可更快地打包、测试以及部署应用程序。本文主要介绍SpringBoot项目如何构建docker镜像以及推送到私服或者docker hub服务器上。 本文介绍的方式是使用docker-maven-plugin的方式构建SpringBoot的docker镜像以及推送到私服或docker hub服务器上

    2024年02月16日
    浏览(34)
  • idea打包docker镜像时出现“Failed to execute goal com.spotify:docker-maven-plugin:1.2.2:build (build-image) “

     问题解决参考地址 解决方法1:先看第一张图片,一开始我也是不知道什么原因导致的,后来看到build时获取的ProgressMessage信息都是空的,然后一点点排查,然后发现是镜像命名的问题的,镜像命名不允许使用驼峰命令。   解决方法2:可能是docker 上没有内存了,也会报错。

    2024年02月11日
    浏览(33)
  • Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found

    Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found pom.xml 文件的配置情况,如下所示: Maven仓库中存在多个版本的 spring-boot-maven-plugin 包,如下所示: 无法识别使用哪个版本的 spring-boot-maven-plugin 包。 方案1:使用 version 标签添加 版本号 ,如下所示。 方案2:使用 plugi

    2024年02月01日
    浏览(38)
  • 成功解决 Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found

    File - Invalidate Caches 先看自己当前的版本号 首先打开 pom.xml 文件进行查看 Ctrl+F搜索 spring-boot-starter-parent 找到 artifactIdspring-boot-starter-parent/artifactId 这一行。 下面一行就是版本号。 拿我的举例: 复制 version版本号/version 然后修改 将上面查找到的版本号粘贴到报错的那一行下面

    2024年02月12日
    浏览(33)
  • Cannot resolve plugin org.springframework.boot:spring-boot-maven-plugin: 解决办法

    方法一 可能是你的镜像源的问题,查看你的maven安装目录下的 conf/setting.xml 的镜像源是否是国外地址还是说国内的一些镜像地址,国内的话下载会稳定点,如果不是国内的,请改成: 方法二 查看你的pom.xml文件里的spring-boot-maven-plugin部分是否有版本号,如果没有请加上: 方法

    2024年01月21日
    浏览(39)
  • 解决Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found的问题

    在一个风和日丽的下午,我跟着B站一个Up主敲一个SpringBoot+VUE项目,敲着代码听着歌,在使用Maven下载相关包时,突然就报错啦!(自己的已经解决了,当时没截图,只能用一下别人的图了): 代码如下: 那问题发生了能怎么办呢?百度呗!毕竟面向百度编程时一个好习惯!

    2024年02月16日
    浏览(35)
  • Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found的解决办法

     pom.xml文件中出现这样的依赖报错 解决办法如下: 1、找到这个 spring-boot-starter-parent 依赖 2、将其版本复制到 spring-boot-maven-plugin 下面      

    2024年02月15日
    浏览(32)
  • Plugin ‘org.springframework.boot:spring-boot-maven-plugin:‘ not found的解决方法

    出现这个报错通常是因为 Maven 无法找到相应的 Spring Boot Maven 插件。要解决这个问题,可以尝试以下几种方法: 检查  pom.xml  文件中是否正确配置了 Spring Boot Maven 插件。确保以下内容存在,并且版本号是有效的: 确保  groupId 、 artifactId  和  version  的值与你使用的 Spring

    2024年03月27日
    浏览(43)
  • 已解决org.springframework.boot:spring-boot-maven-plugin:

    已解决org.springframework.boot:spring-boot-maven-plugin: org.springframework.boot:spring-boot-maven-plugin: org.springframework.boot:spring-boot-maven-plugin 是 Spring Boot 提供的一个 Maven 插件,它用于将 Spring Boot 应用打包成可执行的 JAR 文件或者 WAR 文件。 下滑查看解决方法 该插件提供了许多功能,如将依赖

    2024年02月08日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包