通过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>
  
相关文章
|
5月前
|
Docker 容器 Perl
云效flow构建docker镜像更换apt源为阿里镜像源
在 Dockerfile 中添加命令以更换 Debian 源为阿里云镜像,加速容器内软件包下载。核心命令通过 `sed` 实现源地址替换,并更新 apt 软件源。其中 `cat` 命令用于验证替换是否成功,实际使用中可删除该行。
1193 32
|
4月前
|
缓存 Shell 网络安全
将应用程序打包成Docker镜像时可能遇到哪些问题?
将应用程序打包成Docker镜像时可能遇到哪些问题?
451 77
|
6月前
|
存储 JSON 数据格式
docker load 后镜像名称为空的问题解决
Docker在容器化应用程序时提供了强大的镜像管理功能,但也可能在某些操作中遇到如镜像名称为空的问题。通过理解问题的成因并采取适当的解决方案,如正确保存和加载镜像、手动修复标签等,可以有效避免和解决这一问题。通过本文提供的指导,您可以确保在使用Docker进行镜像操作时更为顺利,并提高容器管理的效率。
426 82
|
4月前
|
Java 测试技术 项目管理
【JavaEE】从 0 到 1 掌握 Maven 构建 Java 项目核心技巧 解锁 Java 项目高效管理实用实例
本文从Maven基础概念讲起,涵盖安装配置、核心概念(如POM与依赖管理)及优化技巧。结合Java Web项目实例,演示如何用Maven构建和管理项目,解决常见问题,助你高效掌握这一强大工具,提升Java开发与项目管理能力。适合初学者及进阶开发者学习。资源链接:[点此获取](https://pan.quark.cn/s/14fcf913bae6)。
162 6
|
4月前
|
Shell 应用服务中间件 nginx
docker 镜像的部分常用命令
docker镜像常用命令
162 16
|
4月前
|
关系型数据库 MySQL Docker
|
5月前
|
Ubuntu Linux 网络安全
Ubuntu Docker镜像:支持systemctl、SSH、VNC
总的来说,创建一个支持systemctl、SSH和VNC的Ubuntu Docker镜像需要一些技术知识,但是通过学习和实践,我们可以掌握这些技术。这将使我们能够更有效地使用Docker,更好地管理我们的应用程序和服务。CentOS系统中的日志文件位置和管理
182 17
|
5月前
|
Ubuntu 安全 网络安全
Docker镜像:Ubuntu支持systemctl、SSH和VNC
总的来说,Docker提供了一个灵活且强大的方式来创建和运行自定义的Ubuntu镜像。通过理解和使用Dockerfile,你可以轻松地创建一个支持systemctl、SSH和VNC的Ubuntu镜像。
357 21