idea中Docker一键自动化部署

目录下面新建DockerFile文件

以下是DockerFile中的配置信息

java 复制代码
# =============================================
# 基础镜像选择
# =============================================

# 使用 BellSoft 提供的 Liberica OpenJDK Alpine 版本
# 官方镜像地址:https://bell-sw.com/pages/downloads/
# 特点:
# - 基于 Alpine Linux,镜像体积小巧(通常只有几十MB)
# - JDK 17 版本,支持最新的 Java 特性
# - -cds 表示包含 Class Data Sharing(类数据共享),可加速应用启动
FROM bellsoft/liberica-openjdk-alpine:17-cds

# 其他可选的基础镜像(已注释):
# FROM bellsoft/liberica-openjdk-rocky:21.0.7-cds  # 基于 Rocky Linux,适合需要完整 Linux 环境的场景
# FROM findepi/graalvm:java17-native              # GraalVM 原生镜像,追求极致启动速度和内存效率


# =============================================
# 元数据配置
# =============================================

# 标识镜像维护者信息,方便后续维护和联系
LABEL maintainer="YourName"


# =============================================
# 目录结构创建
# =============================================

# 创建应用运行所需的目录结构
# -p 参数确保父目录不存在时自动创建
RUN mkdir -p /service/logs \     # 日志文件目录
    /service/temp \              # 临时文件目录
    /skywalking/agent           # 可观测性工具目录(用于 APM 工具如 SkyWalking)


# =============================================
# 工作目录和路径配置
# =============================================

# 设置容器内的工作目录,后续命令都在此路径下执行
WORKDIR /factory


# =============================================
# 环境变量配置
# =============================================

# 应用基础环境变量
ENV SERVER_PORT=9301 \    # 应用服务监听端口
    LANG=C.UTF-8 \        # 设置字符编码为 UTF-8
    LC_ALL=C.UTF-8 \      # 设置本地化字符编码
    JAVA_OPTS=""          # Java 虚拟机参数,可通过运行时覆盖

# 设置时区为东八区(上海时间)
# 避免容器内时间与宿主机不一致导致的问题
ENV TZ=Asia/Shanghai


# =============================================
# 网络配置
# =============================================

# 声明容器运行时监听的端口
# 使用环境变量动态配置,提高灵活性
EXPOSE ${SERVER_PORT}


# =============================================
# 应用文件部署
# =============================================

# 将构建好的 Java 应用 JAR 包添加到镜像中
# 源路径:./target/service.jar(Docker 构建上下文中的路径)
# 目标路径:./app.jar(WORKDIR 相对路径)
ADD ./target/service.jar ./app.jar


# =============================================
# Shell 配置
# =============================================

# 指定 Dockerfile 中 RUN 命令使用的 shell
# 使用 Alpine 的默认 shell:/bin/sh
SHELL ["/bin/sh", "-c"]


# =============================================
# 容器启动命令
# =============================================

# 定义容器启动时执行的命令
# 使用 ENTRYPOINT 确保命令不可被覆盖,保证应用正确启动
ENTRYPOINT java \
    # 使用非阻塞的随机数生成器,显著加速应用启动
    -Djava.security.egd=file:/dev/./urandom \
    
    # 动态配置 Spring Boot 应用服务端口
    -Dserver.port=${SERVER_PORT} \
    
    # =========================================
    # 可观测性配置(已注释,按需启用)
    # =========================================
    # -Dskywalking.agent.service_name=your-service \      # 配置 SkyWalking 服务名称
    # -javaagent:/skywalking/agent/skywalking-agent.jar \ # 启用 SkyWalking Java Agent
    
    # =========================================
    # JVM 优化配置
    # =========================================
    -XX:+HeapDumpOnOutOfMemoryError \    # 内存溢出时生成堆转储文件,便于问题诊断
    -XX:+UseZGC \                        # 使用 Z Garbage Collector,低延迟垃圾回收器
    ${JAVA_OPTS} \                       # 注入额外的 JVM 参数,支持运行时自定义
    
    # 启动 Spring Boot 应用
    -jar app.jar

右键DockerFile文件点击运行时配置

相关推荐
虎鲸不是鱼1 小时前
AI 自动化逆向(三十三)换一个「驱动器」,覆盖率跳了一个量级
人工智能·自动化·大模型·逆向·ai逆向
吴声子夜歌1 小时前
Kubernetes权威指南——Kubernetes安装配置指南(网络配置)
网络·容器·kubernetes
闲云野鹤在人间2 小时前
Kubernetes Pod Scheduler 详解
云原生·容器·kubernetes
虎鲸不是鱼2 小时前
AI 自动化逆向(三十四)自建指令缓存:把分钟级查询压到秒级
人工智能·自动化·大模型·逆向·ai逆向
正经教主2 小时前
【FDE系列】阶段2:Day 42(UP详细版):Dockerfile 实战 — 把你的应用打包成镜像
人工智能·docker·fde
刘马想放假3 小时前
Copyparty 轻量文件共享:Docker Compose 部署、权限与多协议使用全指南
docker·容器
X1A0RAN4 小时前
自动化流水线的“最后一公里“:任务监听与报告通知服务
自动化·流水线·效率工具
4SAPI4 小时前
会议智能处理大模型 API 生产选型指南:4SAPI、硅基流动与 OpenRouter 的架构权衡
人工智能·架构·自动化·gateway·php
切糕师学AI4 小时前
Kubernetes 探针全解析:启动探针、存活探针与就绪探针(Startup/Liveness/Readiness Probe)
容器·kubernetes·探针·probe
云飞云共享云桌面5 小时前
机械制造研发部门:一台SolidWorks云主机替代 10 台传统图形工作站
运维·服务器·网络·3d·自动化·制造