温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

使用Maven插件如何构建一个Docker镜像

发布时间:2021-04-19 16:45:48 来源:亿速云 阅读:261 作者:Leah 栏目:编程语言

这期内容当中小编将会给大家带来有关使用Maven插件如何构建一个Docker镜像,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

过程步骤

环境

电脑系统是MacOS,在进行下面的步骤之前,先具备一下条件:

  • Docker Registry

  • Maven(3.5.0)

  • JDK(1.8.0_131)

  • Docker for Mac (17.09.0-ce-mac35)

Maven 和JDK 就不用过多多了,必须具有的。Docker Registry是私有的hub,mac上装好docker之后,配置一下Docker Registry的地址,配置如下:

使用Maven插件如何构建一个Docker镜像

因为docker默认需要私服做https支持,我这边之前有个私服做了https支持,所以我这里就不需要配置了

pom 配置

pom文件中需要引入相应的插件。docker-maven-plugin有三款:spotify、fabric8io和bibryam。其中第一款最为流行,资料也多,所以毫不犹豫选择第一款。

插件有两种使用方式,一种是在直接在pom配置中指定baseImage和entryPoint。另一种适合于复杂的构建,使用dockerfile,只需要在配置中指定dockerfile的位置。前一种比较简单,此处略过,主要讲下第二种的配置

<plugin>        <groupId>com.spotify</groupId>        <artifactId>docker-maven-plugin</artifactId>        <version>${maven.docker.version}</version>        <!--插件绑定到phase-->        <executions>          <execution>            <phase>install</phase>            <goals>              <goal>build</goal>            </goals>          </execution>        </executions>        <configuration>        <!--配置变量,包括是否build、imageName、imageTag,非常灵活-->          <skipDocker>${docker.skip.build}</skipDocker>          <imageName>${docker.image.prefix}/${project.artifactId}</imageName>          <!--最后镜像产生了两个tag,版本和和最新的-->          <imageTags>            <imageTag>${project.version}</imageTag>            <imageTag>latest</imageTag>          </imageTags>          <forceTags>true</forceTags>                   <env>            <TZ>Asia/Shanghai</TZ>          </env>          <!--时区配置-->          <runs>            <run>ln -snf /usr/share/zoneinfo/$TZ /etc/localtime</run>            <run>echo $TZ > /etc/timezone</run>                     </runs>          <dockerDirectory>${project.basedir}</dockerDirectory>          <resources>            <resource>              <targetPath>/</targetPath>              <directory>${project.build.directory}</directory>              <include>${project.build.finalName}.jar</include>            </resource>          </resources>          <!--push到私有的hub-->          <serverId>docker-registry</serverId>        </configuration> </plugin>

${maven.docker.version}${docker.skip.build}${docker.image.prefix}都是可配置的变量。${project.basedir}${project.build.directory}${project.build.finalName}${project.version}分别对应项目根目录、构建目录、打包后生成的结果名称、项目版本号。

上面的pom插件配置,指定了dockerfile的位置和镜像的命名规则。并将docker的build目标,绑定在install这个phase上。

使用Maven插件如何构建一个Docker镜像

dockerfile

FROM java:8 COPY target/maven-docker-image-0.0.1-SNAPSHOT.jar /app.jar EXPOSE 8080 ENTRYPOINT ["java","-jar" ,"/app.jar"]

setting.xml

在pom插件中,还有一个serverId的配置。这个配置是必要的,对于需要将image上传到私有hub上,在如上配置之后,只需要加上-DpushImage即可实现。serverId是与maven的配置文件setting.xml相对应,setting.xml中增加的配置:

<server>  <id>docker-registry</id>  <username>用户名</username>  <password>密码</password>  <configuration>   <email>邮箱</email>  </configuration> </server>

结果

使用Maven插件如何构建一个Docker镜像

使用Maven插件如何构建一个Docker镜像

上述就是小编为大家分享的使用Maven插件如何构建一个Docker镜像了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI