Java Maven项目实现自动化部署到Docker上

前言

        目前项目是采用docker部署的, 由于需要新增一个微服务,最终是实现自动推送到远程的docker上,所以就顺便记录一下操作步骤

服务器层面配置

开启 docker 所在服务器远程访问

# 1、修改docker配置文件


vim /lib/systemd/system/docker.service

在ExecStart=后面加上:
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

修改后的配置如下:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

# 2、刷新配置重启服务


systemctl daemon-reload
systemctl restart docker

开放防火墙

# 开放防火墙2375端口, 2375端口是自己上面绑定的,可以根据自己需要进行调整


firewall-cmd --zone=public --add-port=2375/tcp --permanent
# 更新配置信息(这样就不需要重启防火墙了)
firewall-cmd --reload
# 查看服务器开放端口
netstat -tlun

项目层面配置

项目pom文件引入插件

添加maven-compiler-plugin插件如下

<build><!-- install后的jar包名称 --><finalName>${project.artifactId}</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target></configuration></plugin><plugin><groupId>com.spotify</groupId><artifactId>docker-maven-plugin</artifactId><version>1.2.2</version><configuration><!-- 镜像名称,相当于执行docker build -t 命令后面跟的镜像名称 --><imageName>shr/${project.artifactId}</imageName><!-- Dockerfile文件存放目录 --><dockerDirectory>src/main/docker</dockerDirectory><!-- docker远程服务器地址 --><dockerHost>http://192.168.68.68:2375</dockerHost><!--指定pem证书文件路径地址 --><dockerCertPath>${project.basedir}docker-pem</dockerCertPath><!-- 指定tag版本 --><!--<imageTags><imageTag>1.0</imageTag></imageTags>--><!-- build 时强制覆盖 tag,配合 imageTags 使用--><!--<forceTags>true</forceTags>--><!-- 这里是复制 jar 包到 docker 容器指定目录配置 --><resources><resource><targetPath>/</targetPath><directory>${project.build.directory}</directory><include>${project.build.finalName}.jar</include></resource></resources></configuration><executions><!-- 执行mvn install时,执行 build、tag 操作--><execution><id>build-image</id><phase>install</phase><goals><goal>build</goal></goals></execution><!-- tag 用于给镜像打标签--><!--<execution><id>tag-image</id><phase>package</phase><goals><goal>tag</goal></goals><configuration><image>${project.artifactId}:latest</image><newName>${project.artifactId}:${project.version}</newName></configuration></execution>--><!-- maven执行deploy时push镜像 --><!--<execution><id>push-image</id><phase>deploy</phase><goals><goal>push</goal></goals><configuration><imageName>${project.artifactId}:${project.version}</imageName></configuration></execution>--></executions></plugin></plugins>
</build>

比较重要的参数含义如下

dockerHost:   docker所在的服务器地址

dockerDirectory:  dockerFile文件路径,也就是下面所要说的

dockerCertPath: 安全证书路径,这是为了安全的, 非必须,如果需要自行查找资料

编写Dockerfile文件

文件如下,如有需要再自行进行修改

FROM frolvlad/alpine-java:jdk8-slim
MAINTAINER zxc
ADD ./lib/local_policy.jar  /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/local_policy.jar
ADD ./lib/US_export_policy.jar /usr/lib/jvm/java-1.8-openjdk/jre/lib/security/US_export_policy.jar
ADD ./target/yourproject.jar /web.jar
VOLUME /logs
EXPOSE 8805/tcp
ENTRYPOINT ["sh","-c","java -Dfile.encoding=UTF8 -Duser.timezone=GMT+8 -jar /web.jar"]

其中比较重要的参数含义如下

ADD ./target/yourproject.jar /web.jar:    就是把maven的项目添加到根目录,并改名为 web

VOLUME /logs :  日志文件挂载

EXPOSE 8805/tcp   暴露的端口, 对外访问的,一般跟项目端口一样即可

执行install

        就是常规的maven install指令,   mvn install, 然后去docker所在服务器执行如下指令

docker images 就能看到你的项目在上面了

注:集成jenkins

        如果你需要集成jenkins完成自动构建也是可以的,只不过这部分属于另外的知识了,有时间的话我也补充一下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/758838.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

刷新金融知识库,与时代并进!社科院与杜兰大学金融管理硕士项目为职场注入新活力

在这个日新月异的时代&#xff0c;金融行业的变革如同翻涌的浪潮&#xff0c;不断冲刷着我们的知识体系。为了应对这一挑战&#xff0c;我们需要不断更新自己的金融知识库&#xff0c;掌握最新的行业动态和前沿理论。而社科院与杜兰大学联合推出的金融管理硕士项目&#xff0c;…

推荐系统中常用评价指标及其实现

推荐系统中常用评价指标及其实现 定义 0 符号系统 符号含义备注K, kTop-K 推荐中的 K 值, 比如 Top-5 表示给每个用户推荐 5 个物品 U U U用户总数量 I I I物品总数量 u u u代指一个用户 i i i代指一个物品 R ( u ) \mathcal{R}(u) R(u)给用户 u u u 推荐的物品列表 T ( u …

腾讯云服务器如何购买省钱?2024年优惠券和优惠活动整理

腾讯云代金券领取渠道有哪些&#xff1f;腾讯云官网可以领取、官方媒体账号可以领取代金券、完成任务可以领取代金券&#xff0c;大家也可以在腾讯云百科蹲守代金券&#xff0c;因为腾讯云代金券领取渠道比较分散&#xff0c;腾讯云百科txybk.com专注汇总优惠代金券领取页面&am…

Windows 10中打开控制面板的13种方法,总有一种适合你

前言 虽然有传言称微软将取消控制面板,但它不会那么快消失。一些重要的设置仅在Windows 10的经典控制面板中找得到,它们不在设置应用程序中。本文有13种方法可以打开控制面板。 搜索开始菜单 你可以使用“开始”菜单的搜索功能搜索PC上的任何应用程序。在任务栏左侧的搜索…

设计模式|工厂模式

文章目录 1. 工厂模式的三种实现2. 简单工厂模式和工厂方法模式示例3. 抽象工厂模式示例4. 工厂模式与多态的关系5. 工程模式与策略模式的关系6. 面试中可能遇到的问题6.1 **工厂模式的概念是什么&#xff1f;**6.2 **工厂模式解决了什么问题&#xff1f;**6.3 **工厂模式的优点…

Redis如何设置键的生存时间或过期时间

键的生存时间或过期时间 概述。 通过EXPIRE命令或者PEXIPIRE命令&#xff0c;客户端可以以秒或者毫秒精度为数据库中的某个键设置生存时间(Time To Live,TTL)&#xff0c;在经过指定的秒数或者毫秒数之后&#xff0c;服务器就会自动删除生存时间为0的键: 127.0.0.1:6379>…

策略模式实战

项目推荐最近开发完成的项目中使用到了策略模式&#xff0c;实现多种支付方式&#xff0c;避免了后期支付方式if-else代码的冗余&#xff0c;也有利于后期支付的一个扩展。同时这个项目非常适合于做毕设&#xff0c;想了解这个项目的同学可以联系我QQ&#xff1a;3808898981 前…

Python学习:注释和运算符

python 注释 在Python中&#xff0c;注释用于在代码中添加解释、说明或者提醒&#xff0c;但并不会被解释器执行。Python中的注释以#开头&#xff0c;直到行末为止。下面是关于Python注释的详细解释和举例&#xff1a; 单行注释&#xff1a;使用#符号在行的开头添加注释&…

ARM汇编程序设计 注释 “每日读书“

熟悉了ARM体系结构和常用的汇编指令&#xff0c;我们就可以尝试编写简单的ARM汇编程序了。在一段完整的汇编程序中&#xff0c;不仅包含了各种汇编指令和伪指令&#xff0c;还包含了各种伪指令。伪操作可以让程序员更加方便的编写汇编程序&#xff0c;实现更加复杂的逻辑功能。…

数据结构:图的最短路径

一、最短路径的基本概念 无权图&#xff1a;路径包含的边的条数。带权图&#xff1a;路径包含的各边权值之和。长度最小的路径称为最短路径&#xff0c;最短路径的长度也称为最短距离。 二、无权图单源最短路径 无权图单源最短路径使用BFS求出&#xff0c;时间复杂度为O(ne)。…

【MySQL】图形化界面工具DataGrip安装&配置&使用

前言 大家好吖&#xff0c;欢迎来到 YY 滴MySQL系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C Linux的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的…

NVIDIA Chat with RTX教程使用以及CUDA和CUDNN

基本环境安装&#xff1a;CUDA12.1CUDNNcudnn-windows-x86_64-8.9.7.29_cuda12-archive 1、CUDA下载 CUDA官方安装教程: https://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html CUDA Toolkit的下载: CUDA Toolkit 12.1 Downloads | NVIDIA Dev…

MR混合现实情景实训教学系统在商务外语课堂上的教学应用

商务外语课程通常注重实践性和情景化&#xff0c;要求学生能够在实际的商务环境中运用外语进行交流和沟通。MR混合现实情景实训教学系统可以提供一种全新的教学方式&#xff0c;使学生能够身临其境地体验商务场景&#xff0c;提高他们的外语应用能力和实际操作能力。 1. 模拟真…

vue3封装对话框el-dialog组件

实现逻辑&#xff1a; 1、引入对话框组件&#xff1b; 2、对话框组件中定义一个方法&#xff0c;通过defineExpose({})暴漏出去&#xff1b; 3、组件使用&#xff0c;并用ref绑定&#xff1b; 4、点新增和编辑的时候&#xff0c;通过ref调用对话框暴漏出来的方法&#xff0c;并…

【数据可视化】Echarts中的其它图表

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. 前言2. 绘制散点图2.1 绘制基本散点图2.2 绘制两个序列的散点图2.3 绘制带涟漪特效的散点图 3. 绘制气泡图3.1 绘制标准气泡图3.2 绘制各国人均寿命与GDP气泡图3.3 绘制城市A、城市B、城市C三个城市空气污染指数气…

塑料工厂5G智能制造数字孪生可视化平台,推进塑料行业数字化转型

塑料工厂5G智能制造数字孪生可视化平台&#xff0c;推进塑料行业数字化转型。塑料制造行业作为重要的工业领域&#xff0c;亟需借助这一平台实现产业升级与转型&#xff0c;以适应市场的变化和提高生产效率。传统的塑料制造过程往往存在生产效率低下、资源浪费、环境污染等问题…

二维数组_肿瘤面积

任务描述 在一个正方形的灰度图片上&#xff0c;肿瘤是一块矩形的区域&#xff0c;肿瘤的边缘所在的像素点在图片中用0表示。其它肿瘤内和肿瘤外的点都用255表示。现在要求你编写一个程序&#xff0c;计算肿瘤内部的像素点的个数&#xff08;不包括肿瘤边缘上的点&#xff09;…

突发!OpenAI服务异常!!!

2024/3/20傍晚7点&#xff0c;笔者的朋友在使用OpenAI时&#xff0c;页面提示服务异常&#xff0c;由此引发了我的深思&#xff1a;人工智能的脆弱性与未来的挑战 2024年3月20日&#xff0c;傍晚7点&#xff0c;一个普通的周二&#xff0c;我的朋友在尝试使用OpenAI时&#xf…

人脸识别AI视觉算法---豌豆云

人脸识别AI算法是一种基于计算机视觉和深度学习技术的系统&#xff0c;用于自动识别和验证人脸。 这些算法在多种领域有着广泛的应用&#xff0c;包括安全认证、身份验证、监控、社交媒体、医疗保健和零售等。 以下是有关人脸识别AI算法的技术背景和应用场景的介绍&#xff1…

方案开发行业迎来新数字化转型新浪潮

着科技的不断发展和市场需求的日益增长&#xff0c;方案开发行业正迎来新一轮的创新浪潮。数字化转型已成为该行业的关键词&#xff0c;各大企业纷纷加大研发投入&#xff0c;以期在激烈的市场竞争中脱颖而出。 近年来&#xff0c;方案开发行业在范围内取得了显著的发展。根据…