通过maven插件构建docker镜像

简介: 通过maven插件构建docker镜像: 1、在pom.xml 中添加maven的docker插件。 <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.
通过maven插件构建docker镜像:
    1、在pom.xml 中添加maven的docker插件。
         <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.4.13</version>
            <configuration>
                <imageName>jingdata/microservice-discovery-eureka:0.0.1</imageName>
                <baseImage>java</baseImage>
                <entryPoint>["java","-jar","/{project.build.finalName}.jar"]</entryPoint>
                <resources>
                    <resource>
                        <targetPath>/</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>
        
  2、构建docker镜像:  mvn  clean   package   docker:build
  3、执行docker images 查看刚构建的镜像
  4、启动镜像:  docker  run -d -p  8761:8761  jingdata/microservice-discovery-eureka:0.0.1
  5、访问测试:  128.0.0.1:8761 
  

插件读取dockerfile进行构建:

  1、在src/main目录下,新建文件夹docker,在文件夹中新建一个Dockerfile文件。
      FROM java:8
      VOLUME /tmp
      ADD  microservice-discovery-erueka-0.0.1-SNAPSHOT.jar   app.jar 
      RUN  bash   -c  'touch /app.jar'
      EXPOSE  9000
      ENTRYPOINT  ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
      修改pom.xml文件:
       <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.4.13</version>
            <configuration>
                <imageName>jingdata/microservice-discovery-eureka:0.0.2</imageName>
                <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>
                <resources>
                    <resource>
                        <targetPath>/</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>
        
  2.将插件绑定在没某个phase执行
       <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.4.13</version>
            <executions>
                <execution>
                    <id>build-image</id>
                    <phase>package</phase>
                    <goals>
                        <goal>build</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <imageName>jingdata/microservice-discovery-eureka:0.0.3</imageName>
                <baseImage>java</baseImage>
                <entryPoint>["java","-jar","/${project.build.finalName}.jar"]</entryPoint>
                <resources>
                    <resource>
                        <targetPath>/</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
            </configuration>
        </plugin>      
  
  3.推送镜像
    (1)、修改maven的全局配置文件settings.xml,在其中添加docker hub的用户信息。
          <server>
              <id>docker-hub</id>
              <username>docker-hub的用户名</username>
              <password>docker-hub的密码</password>
              <configuration>
                <email>docker-hub的邮箱</email>
              </configuration>
          </server> 
    (2)、修改pom.xml文件
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>0.4.13</version>
            <configuration>
                <imageName>jingdata/microservice-discovery-eureka:0.0.4</imageName>
                <baseImage>java</baseImage>
                <entryPoint>["java","-jar","/{project.build.finalName}.jar"]</entryPoint>
                <resources>
                    <resource>
                        <targetPath>/</targetPath>
                        <directory>${project.build.directory}</directory>
                        <include>${project.build.finalName}.jar</include>
                    </resource>
                </resources>
                
                <!-- 与maven配置文件settings中配置的server id一致,用于推送镜像--->
                <serverId>docker-hub</serverId>
            </configuration>
        </plugin>
   (3)、添加pushImage标示,推送镜像
          mvn clean package docker:build  -DpushImage
          
   (4)、推送到私有仓库地址:
          <imageName>localhost:5000/jingdata/microservice-discovery-eureka:0.0.4</imageName>
  
相关文章
|
2天前
|
缓存 Linux Docker
docker 跨平台构建镜像
docker 跨平台构建镜像
5 0
|
2天前
|
Linux Docker Python
【docker】Mac M1 构建 x64 linux镜像
【docker】Mac M1 构建 x64 linux镜像
6 0
|
2天前
|
XML Java Maven
Maven 构建配置文件
Maven的构建配置文件(如pom.xml和settings.xml)用于定制不同环境的构建过程,如生产或开发。配置文件分为项目级、用户级和全局三种类型,可通过命令行、Maven设置、环境变量或文件存在与否激活。举例中,env.properties作为默认,env.test.properties和env.prod.properties分别对应测试和生产环境。这些文件并非实际的构建配置文件,而是测试示例。激活配置文件可影响如数据库服务器地址等参数。
|
2天前
|
Java Maven
Maven 自动化构建
Maven自动化构建确保依赖稳定性:当`bus-core-api`构建完成,`app-web-ui`和`app-desktop-ui`自动构建,两者依赖`bus-core-api`的1.0-SNAPSHOT版本。
|
2天前
|
Java 测试技术 Maven
Maven 构建生命周期
Maven的构建生命周期包括验证、编译、测试、打包、检查、安装和部署等阶段,用于项目构建与发布。标准生命周期有Clean(清除目标目录)、Default(验证、编译、测试、打包、验证质量、安装到本地仓库、部署到远程仓库)和Site(生成项目文档和站点)。每个阶段由插件目标组成,如clean、package和dependency:copy-dependencies,执行顺序依据命令行指定。
|
8天前
|
Java 测试技术 Maven
Maven 构建生命周期
Maven的构建生命周期包括验证、编译、测试、打包、检查、安装和部署等阶段,确保项目正确、编译、测试并分发。它有三个标准生命周期:Clean(用于删除编译输出)、Default(涵盖验证、编译、测试、打包、验证质量、安装和部署)和Site(生成及部署项目文档)。
|
9天前
|
存储 持续交付 数据安全/隐私保护
实现镜像管理轻松搞定:Docker 仓库管理详解
实现镜像管理轻松搞定:Docker 仓库管理详解
150 1
|
9天前
|
安全 数据安全/隐私保护 Docker
Docker 容器连接:构建安全高效的容器化网络生态
Docker 容器连接:构建安全高效的容器化网络生态
|
9天前
|
XML Java 测试技术
Maven 构建 & 项目测试
在本节中,我们学习了如何使用Maven构建和测试Java应用。在`C:/MVN/consumerBanking`项目中,`pom.xml`配置了JUnit为测试框架。通过命令行运行`mvn clean package`,Maven执行清理、编译、运行测试和打包成`consumerBanking-1.0-SNAPSHOT.jar`。测试报告位于`target/surefire-reports`。新增`Util.java`类后,更新`App.java`以调用它。执行`mvn clean compile`后,运行结果显示&quot;Hello World!&quot;。
|
Cloud Native Docker 容器
推荐3款 Docker 认证的实用免费插件,帮助您快速构建云原生应用程序!
Docker 认证技术项目(Docker Certified Technology Program)是为了帮助合作伙伴和客户识别出在质量、协作支持以及合规性等方面表现出色的容器和插件。
9595 0