Dockerfile + docker-compose 构建java镜像并运行服务

news/2024/10/18 20:10:53/

🏝️ 博主介绍

大家好,我是一个搬砖的农民工,很高兴认识大家 😊 ~
👨‍🎓 个人介绍本人是一名后端Java开发工程师,坐标北京 ~
🎉 感谢关注 📖 一起学习 📝 一起讨论 🌈 一起进步 ~
🙏 作者水平有限,欢迎各位大佬指正留言,相互学习进步 ~

目录

  • 🏝️ 博主介绍
  • 1. 目录结构 🚀
  • 2. Dockerfile 🚀
  • 3. docker-compose 🚀
  • 4. 执行命令 🚀
  • 5. 开通防火墙端口 🚀

1. 目录结构 🚀

  • docker-compose.yml/opt/pro_xx/jar
  • Dockerfile/opt/pro_xx/jar/springboot-basis
  • springboot-basis.jar: /opt/pro_xx/jar/springboot-basis
[root@localhost jar]# ls
docker-compose.yml  springboot-basis[root@localhost jar]# ls springboot-basis
Dockerfile  springboot-basis.jar

Dockerfile__22">2. Dockerfile 🚀

# AdoptOpenJDK 停止发布 OpenJDK 二进制,而 Eclipse Temurin 是它的延伸,提供更好的稳定性
FROM eclipse-temurin:8-jre## 创建目录,并使用它作为工作目录
RUN mkdir -p /opt/pro_xx/jar/springboot-basis
WORKDIR /opt/pro_xx/jar/springboot-basis
## 将后端项目的 Jar 文件,复制到镜像中,前面是当前目录,后面是镜像中目录
COPY ./springboot-basis/springboot-basis.jar springboot-basis.jar## 设置 TZ 时区
## 设置 JAVA_OPTS 环境变量,可通过 docker run -e "JAVA_OPTS=" 进行覆盖
ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx128m"## 暴露后端项目的 8082 端口
EXPOSE 8082## 启动后端项目
## -Djava.security.egd=file:/dev/./urandom 是一个 Java 系统属性设置,用于指定随机数生成器的源
## /dev/urandom:这是一个非阻塞型随机数生成器
CMD java ${JAVA_OPTS} -Xms128m -Xmx128m -Djava.security.egd=file:/dev/./urandom -jar springboot-basis.jar

dockercompose__46">3. docker-compose 🚀

# version: '3.8'  新版本不需要指定 
services:  springboot-basis:  build:  context: .  # 指定docker-compose.yml文件所在的目录为构建上下文  dockerfile: springboot-basis/Dockerfile  # 指定app1目录下的Dockerfile  image: springboot-basis-image  # 为构建的镜像指定一个名称  container_name: springboot-basis-container  # 为容器指定一个名称(可选)  ports:  - "8082:8082"  networks:  - app_network  restart: unless-stopped  # 重启策略  
# 网络
networks:  app_network:  driver: bridge

4. 执行命令 🚀

[root@localhost jar]# pwd
/opt/pro_xx/jar[root@localhost jar]# ls
docker-compose.yml  springboot-basis[root@localhost jar]# docker-compose up -d
[+] Running 2/2✔ Network jar_app_network               Created                                                                              0.2s✔ Container springboot-basis-container  Started                                                                              0.2s[root@localhost jar]# docker-compose ps
NAME                         IMAGE                    COMMAND                  SERVICE            CREATED              STATUS              PORTS
springboot-basis-container   springboot-basis-image   "/__cacert_entrypoin…"   springboot-basis   About a minute ago   Up About a minute   0.0.0.0:8082->8082/tcp, :::8082->8082/tcp

🌈 重新构建

[root@localhost jar]# docker-compose down
[+] Running 2/2✔ Container springboot-basis-container  Removed                                                                             10.1s✔ Network jar_app_network               Removed                                                                              0.1s# 这里需要加--build才能重新构建镜像,否则使用已存在镜像
[root@localhost jar]# docker-compose up --build -d
[+] Building 18.2s (9/9) FINISHED                                                                              docker:default=> [springboot-basis internal] load build definition from Dockerfile                                                         0.0s=> => transferring dockerfile: 1.02kB                                                                                        0.0s=> [springboot-basis internal] load metadata for docker.io/library/eclipse-temurin:8-jre                                    18.0s=> [springboot-basis internal] load .dockerignore                                                                            0.0s=> => transferring context: 2B                                                                                               0.0s=> [springboot-basis 1/4] FROM docker.io/library/eclipse-temurin:8-jre@sha256:fb70a1d7a31c4e1fe5efdca36dc35cfe7e593a3be70d2  0.0s=> [springboot-basis internal] load build context                                                                            0.1s=> => transferring context: 24.92MB                                                                                          0.1s=> CACHED [springboot-basis 2/4] RUN mkdir -p /opt/pro_xx/jar/springboot-basis                                               0.0s=> CACHED [springboot-basis 3/4] WORKDIR /opt/pro_xx/jar/springboot-basis                                                    0.0s=> [springboot-basis 4/4] COPY ./springboot-basis/springboot-basis.jar springboot-basis.jar                                  0.1s=> [springboot-basis] exporting to image                                                                                     0.0s=> => exporting layers                                                                                                       0.0s=> => writing image sha256:26f4766dec23d1f053e5a8a6d8afbb2a58beeb9511752ab7f611edcfb2c20bed                                  0.0s=> => naming to docker.io/library/springboot-basis-image                                                                     0.0s
[+] Running 2/2✔ Network jar_app_network               Created                                                                              0.1s✔ Container springboot-basis-container  Started                                                                              0.2s

5. 开通防火墙端口 🚀

🍨 如果需要对外访问,需要开通服务器防火墙

⚡ 推荐参考:CentOS 系统如何在防火墙开启端口

sudo firewall-cmd --zone=public --permanent --add-port=8082/tcp
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --list-ports

http://www.ppmy.cn/news/1540074.html

相关文章

【Flutter】基础入门:项目结构

Flutter 是一款用于开发跨平台应用的优秀框架。通过一次编写代码,Flutter 可以将应用部署到 Android、iOS、Web、Windows、Linux 和 macOS 等多个平台。作为 Flutter 开发者,理解 Flutter 项目的目录结构和配置是至关重要的,能够帮助你快速构…

ANSYS Workbench三维Voronoi骨架网格结构

Voronoi 3D骨架结构是从Voronoi图中提取出的骨架部分,它代表了原始Voronoi图的主要连接路径。这种骨架可以被看作原始结构的一种简化表示,常用于描述多孔材料、生物组织如骨小梁结构等复杂形态的内部网络。 在工程和科学研究中,Voronoi骨架…

如何利用js操作复杂css布局,实现元素的显示隐藏,并自适应宽高

在大多数业务场景中我们使用的都是固定布局,即使是flex布局也是固定好的,顶多是一侧固定宽度,剩余自适应缩放。但是有些场景可能需要对窗口进行拆分,比如,设置一个分屏,将内容区域一分为二。或者&#xff0…

C语言:符号“->”在C语言中什么意思呢?

1.C语言中符号“->”的意义: ‌指针中的->表示用于访问指针所指向的结构体或联合体的成员。‌ 这是一个操作符,通常用于简化代码,可以替代使用(*ptr).member的方式。 ->操作符的具体用法是,当你有一个指向结构体的指针时…

深度学习架构:MOE架构

文章目录 1. MOE的核心思想2. 数学原理推导a. 输入到输出的流动b. 门控网络(Gating Network)c. 稀疏门控与稀疏选择 3. MOE 的训练过程4. MOE的优势5. MOE的应用6. 总结 🍃作者介绍:双非本科大四网络工程专业在读,阿里…

影刀RPA实战:Excel数据透视表指令

1.Excel数据透视表 Excel数据透视表是Excel中一个强大的数据分析工具,它能够快速对大量数据进行汇总、分析和呈现。用户可以通过简单的拖放操作,将数据字段分配到行标签、列标签、值和报表筛选器区域,实现数据的多维度分析。 创建数据透视表…

智能新势力:防爆挂轨巡检机器人助力化工安全

在化工领域,传统巡检面临诸多难题。化工环境危险,有毒有害气体和易燃易爆物质威胁巡检人员安全,高温高压设备易引发意外。化工厂面积大,人工巡检效率低,难以全面覆盖。且人工检测易漏检隐蔽故障,记录数据易…

jQuery基础教程:掌握核心特性与操作方法

生活要么是一次大胆的冒险,要么什么都不是 文章目录 jQuery操作样式jQuery操作属性jquery动画jQuery节点操作jQuery尺寸和位置操作jQuery事件机制jQuery事件对象jQuery能够绑定的事件jQuery扩展 jQuery操作样式 css操作 设置单个样式:$obj.css(name&…