广告
返回顶部
首页 > 资讯 > 服务器 >使用Maven打包构建Docker镜像并推送到仓库
  • 728
分享到

使用Maven打包构建Docker镜像并推送到仓库

Maven打包构建Docker镜像镜像推送到仓库 2023-05-14 17:05:45 728人浏览 八月长安
摘要

目录一,服务器Docker配置二,本地项目Maven配置2.1 pom.xml2.2 dockerfile2.3 验证2.4 统一dockerfile总结对于开发完成的服务要发布至服

对于开发完成的服务要发布至服务器Docker时,我刚学习了解Docker时构建镜像方式是将我的本地服务先通过maven打包称为jar包,然后再上传至我的服务器上,通过Dockerfile将其构建成为镜像。

后来才了解了直接通过maven命令直接打包构建的方式,以下是完成这一操作的步骤。

一,服务器Docker配置

修改daemon.JSON文件,开放端口2375

"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]

我的文件如下所示:

{
      "insecure-reGIStries":["10.xx.xx.xx:5000"],
    "hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"]
}
{
"graph":"/Data/docker"
}

二,本地项目maven配置

2.1 pom.xml

在项目的pom文件引入docker-maven-plugin插件

<plugin>
                <!-- https://mvnrepository.com/artifact/com.spotify/docker-maven-plugin -->
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.2.2</version>
                <executions>
                    <!-- 当mvn执行install操作的时候,执行docker的build和push -->
                    <execution>
                        <id>build</id>
                        <phase>install</phase>
                        <Goals>
                            <goal>build</goal>
                            <!--                                <goal>push</goal>-->
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!-- 连接到 带docker环境的linux服务器 编译image -->
                    <dockerHost>Http://10.xx.xx.xx:2375</dockerHost>

                    <!--格式:私有仓库/镜像名称:版本号, 如果要执行push操作, 那么镜像名称必须为私有仓库为前缀,不然无效。-->
                    <imageName>10.xx.xx.xx:5000/${project.artifactId}:${docker.tag}</imageName>

                    <!--指定dockerfile文件路径-->
                    <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory>

                    <!-- 指定jar包路径,这里对应Dockerfile中复制 jar 包到 docker 容器指定目录配置,也可以写到 Docokerfile 中 -->
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>

                    <!--跳过测试-->

                    <!-- push到 docker hub 开始 -->
                    <!-- serverId 这个是配置在maven的setting.xml中私服的登录账户信息-->
                    <!--                    <serverId>docker-hub</serverId>-->
                    <retryPushCount>3</retryPushCount>
                    <retryPushTimeout>2000</retryPushTimeout>
                    <registryUrl>10.xx.xx.xx:5000</registryUrl>
                    <!-- 是否自動推送到Registry Server, 建議手動推送 -->
                    <pushImage>${docker.push}</pushImage>
                    <!-- push到 docker hub 结束 -->
                </configuration>
            </plugin>

重要配置解释:

  • dockerHost:docker所在服务器的ip和开放的端口
  • imageName:最终构建的镜像名称
  • dockerDirectory:本地dockerfile文件存放路径
  • targetPath:本地jar包生成位置
  • registryUrl:服务器docker的仓库地址
  • pushImage:是否在构建镜像后同时推送到Docker仓库

2.2 dockerfile

在本地项目的src/main下创建docker目录,在docker目录下创建dockerfile文件

FROM 10.xx.xx.xx:5000/java
VOLUME /tmp
ENV LANG C.UTF-8
COPY *.jar app.jar
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 
RUN echo "Asia/Shanghai" > /etc/timezone 
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom", "-Djava.util.Arrays.useLegacyMergeSort=true", "-jar","app.jar"]

2.3 验证

此时,对该项目进行mvn install时,相当于会同时进行docker:build的动作,将本地项目jar包构建成镜像到服务器中

2.4 统一dockerfile

如果每个服务的镜像构建没有差异,可以将dockerfile从子项目中抽出来,就不需要在每一个项目模块中都创建相同的文件,直接放在项目根路径下就可以进行通用,同时修改pom配置

<!--指定dockerfile文件路径-->
<dockerDirectory>${project.parent.basedir}/docker</dockerDirectory>

此时的dockerfile存储位置为项目父级目录的docker文件夹下。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: 使用Maven打包构建Docker镜像并推送到仓库

本文链接: https://www.lsjlt.com/news/203300.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作