当前位置: 首页 > news >正文

CentOS7——Docker部署java服务

1、安装Docker

        首先要确保系统已安装 Docker,若未安装,可以参考我的另一篇文章现在CentOS7上安装Docker,文章地址如下:

CentOS7系统安装Docker教程-CSDN博客

        Docker当中要安装必备的软件,比如Java运行必要的JDK,如果使用到nacos、mysql、redis等软件也需要安装(可以不在同一个服务器,通过ip连接即可)。

2、准备 Java 服务项目

        创建一个java项目,可以是SpringBoot的,也可以是SpringCloud的,准备好项目后,通过maven将其打包,IntelliJ IDEA里面,点击右侧的Maven,找到你项目下的Lifecycle,如下图:

        点击clean,等待程序执行完成,接着再点击package,等待程序执行完成,到这里,java服务就算是打包好了,可以在target目录下找到打包好的文件(后缀名为.jar):

3、编写DockerFile文件 

        在pom.xml同级目录下,创建DockerFile文件(没有后缀名),在文件中写入以下内容:

# 使用基础镜像(根据项目 Java 版本选择,如 openjdk:11-jre-slim)
FROM openjdk:8-jre-slim# 更新源并安装字体和字体配置工具,安装完成后清理缓存
RUN apt-get update && apt-get install -y --no-install-recommends \fonts-dejavu-core \fontconfig \&& apt-get clean \&& rm -rf /var/lib/apt/lists/*# 设置工作目录
WORKDIR /app# 复制项目 JAR 文件(需先通过 mvn package 等方式打包项目)
# 用图一中打包的java服务名称替换your-app-name
COPY target/your-app-name.jar app.jar# 暴露项目端口(如项目配置的端口为 8080)
EXPOSE 10001# 设置JAVA_OPTS环境变量
ENV JAVA_OPTS="-Ddebug"# 定义启动命令,使用 JAVA_OPTS 环境变量
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Xmx512m -Xms256m -jar app.jar"]

4、连接Docker

        IntelliJ IDEA,点击左上角的File,找到Settings:

         单击Build,Execution,Deployment选项,找到Docker,双击打开,再点击右边面板的+号创建一个Docker连接,输入name以及Engine Api URL(服务器或者虚拟机的ip地址和docker的端口号,默认是:2357),若成功连接,则下方会出现Connection Successful!,否则可能是服务器网络没配置好,所以连接不上,如下图:

5、配置Docker

        IntelliJ IDEA找到下图位置,点击箭头展开下拉菜单,点击Edit Configurations:

        在弹出的窗口点击+号,找到DockerFile,name可以随意填写,server处选择我们上面创建的docker链接(docker服务器),DockerFile处指定使用的DockerFile文件(上面我们创建的),image和container的名字可以自定义,自己能区分出来就行,image(镜像)是用来创建container(容器)的,也可以将image理解为container的副本,如果有多个工程(微服务),则需配置多个DockerFile,都是一样的流程,流程如下图:

        到这里我们就可以将java服务部署到docker上了,在下图位置选择你要部署的服务,然后点击绿色箭头,等待程序执行即可:

        出现successfully说明java服务已经成功上传到docker服务器了,如果java服务在docker上运行不报异常,则部署成功,若报异常则根据异常解决问题(通常是因为docker服务器环境和本地不同,比如版本冲突啥的)。

        部署成功后,在服务器打开命令窗口,输入以下命令:

sudo docker ps

         可以看到正在运行的java服务的container,如下图:

        接着再浏览器输入,服务器ip:端口号/Api URI,即可访问,例如:

192.168.232.128:20000/user/captchat

http://www.xdnf.cn/news/193537.html

相关文章:

  • 基于常微分方程的神经网络(Neural ODE)
  • 如何通过Google Chrome增强网页内容的安全性
  • 低空经济无人机创新实训室解决方案
  • 亚马逊环保标识运营指南:抢占流量新赛道的6大策略解析
  • 读论文《Deep learning-assited pulsed discharge plasma catalysis modeling》2023 ECM
  • Android Studio 2024版,前进返回按钮丢失解决
  • springboot项目之websocket的坑:spring整合websocket后进行单元测试后报错的解决方案
  • Qt6.8.2中WebAssembly沙盒环境中预加载文件
  • Cursor
  • 可视化图解算法:合并二叉树
  • JVM 生产环境问题定位与解决实战(八):实战篇——正则表达式回溯引发的CPU 100%
  • C++20 小语法
  • 【KWDB 创作者计划】_KWDB产品技术解读
  • 【线性规划】对偶问题的实际意义与重要性质 学习笔记
  • 鼠标获取坐标 vs 相机获取坐标
  • SpringBoot应用原生或docker镜像容器集成Skywalking
  • 数据要素与居民就业的深层联结 数字化转型下的劳动力市场变革
  • 项目上线流程梳理(Linux宝塔面板)
  • 基于Springboot + vue + 爬虫实现的高考志愿智能推荐系统
  • Web基础与HTTP协议
  • 第二章、Isaaclab强化学习包装器(1)
  • 研究:大模型输出一致性:确定性与随机性的场景化平衡
  • 【Android】SettingsPreferenceService
  • (002)Excel 使用图表,统计
  • conda和bash主环境的清理
  • 【优秀三方库研读】【性能优化点滴】odygrd/quill 解决伪共享
  • AcWing 885:求组合数 I ← 杨辉三角
  • vs2022解决 此项目需要MFC库。从visual studio安装程序(单个组件选项卡)为正在使用的任何工具和体系结构安装他们问题
  • JQ6500语音模块详解(STM32)
  • C++ 之 【模拟实现 list(节点、迭代器、常见接口)】(将三个模板放在同一个命名空间就实现 list 啦)