若依 - idea集成docker一键部署springboot项目(docker-compose)

本文以 RuoYi 单体项目为例,介绍如何在 IDEA 中集成 Docker,通过 Maven 一键打包生成镜像,并使用 docker-compose 在 Linux 上实现一键部署。

一、项目结构

以 ruoyi-admin 为主模块,目录结构如下:

复制代码
ruoyi-admin
 ├─ src
 ├─ target
 ├─ Dockerfile
 └─ pom.xml
ruoyi-common
ruoyi-framework
ruoyi-generator
ruoyi-liushu
ruoyi-quartz
ruoyi-system
pom.xml
docker-compose.yml

二、编写 Dockerfile

在 ruoyi-admin 目录下创建 Dockerfile:

复制代码
# 使用 Eclipse Temurin 作为基础镜像(AdoptOpenJDK 的延续)
FROM eclipse-temurin:8-jre

# 创建并设置工作目录
RUN mkdir -p /www/wwwroot/project/liushu
WORKDIR /www/wwwroot/project/liushu

# 复制打包生成的 Jar 文件到镜像中
COPY ./target/liushu.jar app.jar

# 设置时区
ENV TZ=Asia/Shanghai

# JVM 启动参数(可在 docker run 时覆盖)
ENV JAVA_OPTS="-Xms512m -Xmx512m -Djava.security.egd=file:/dev/./urandom"

# 应用参数(可选)
ENV ARGS=""

# 暴露后端服务端口
EXPOSE 6988

# 启动命令
CMD java ${JAVA_OPTS} -jar app.jar $ARGS

💡 Tips:Eclipse Temurin 是 AdoptOpenJDK 的延伸版本,更加稳定可靠。

三、配置 Maven 构建 Docker 镜像

在 ruoyi-admin/pom.xml 中添加插件:

复制代码
<plugin>
    <groupId>com.spotify</groupId>
    <artifactId>docker-maven-plugin</artifactId>
    <version>1.2.2</version>
    <configuration>
        <!-- 镜像名称 -->
        <imageName>liushu</imageName>
        <!-- Dockerfile 路径 -->
        <dockerDirectory>${project.basedir}</dockerDirectory>
        <!-- Docker 远程连接地址(本地或服务器) -->
        <dockerHost>http://ip:2375</dockerHost>
        <!-- 将 Jar 包复制到构建上下文 -->
        <resources>
            <resource>
                <targetPath>/</targetPath>
                <directory>${project.build.directory}</directory>
                <include>${project.build.finalName}.jar</include>
            </resource>
        </resources>
    </configuration>
    <!-- 绑定到 Maven 的 package 阶段 -->
    <executions>
        <execution>
            <id>build-image</id>
            <phase>package</phase>
            <goals>
                <goal>build</goal>
            </goals>
        </execution>
    </executions>
</plugin>

四、编写docker-compose

在最外层pom.xml目录下上创建 docker-compose.yml:

复制代码
version: "3.8"

services:
  # 后端服务
  liushu:
    image: liushu:latest
    container_name: liushu
    ports:
      - "6988:6988"
    environment:
      # JVM 参数,可覆盖 Dockerfile 中的 JAVA_OPTS
      JAVA_OPTS: "-Xms512m -Xmx512m"
      # Spring Boot 配置,可以覆盖 spring.redis.host
      SPRING_REDIS_HOST: redis
      SPRING_REDIS_PORT: 6379
      SPRING_REDIS_DATABASE: 0
    depends_on:
      - redis
    restart: always

  # Redis 服务
  redis:
    image: redis:7.2-alpine
    container_name: redis
    ports:
      - "6380:6379" # 改为宿主机6380映射容器6379
    volumes:
      - redis_data:/data
    restart: always

# 数据卷,用于持久化 Redis 数据
volumes:
  redis_data:

✅ 配置说明

项 说明
depends_on 确保 Redis 先启动
SPRING_REDIS_HOST 使用容器名 redis
redis_data 持久化 Redis 数据
restart: always 容器异常退出自动重启

五、IDEA 一键构建镜像

在 IDEA 中:

  1. 打开右侧 Maven 面板

  2. 找到 ruoyi-admin

  3. 执行 clean → package

执行完成后,在 IDEA 的 Docker 面板 中即可看到 liushu 镜像。

六、在 Linux 上一键部署

将 docker-compose.yml 上传到服务器后执行:

复制代码
# 启动所有服务
docker-compose up -d

# 查看容器状态
docker ps

# 查看日志
docker logs -f liushu

浏览器访问:

复制代码
http://服务器IP:6988

八、总结

环节 技术点 说明
开发阶段 IDEA + Docker 插件 实现一键打包镜像
构建阶段 docker-maven-plugin 与 Maven package 绑定
部署阶段 docker-compose 管理服务启动顺序
服务依赖 Redis + Spring Boot 使用环境变量覆盖配置

通过以上流程,我们实现了:

✅ 开发到部署全自动化

✅ Redis 服务自动集成

✅ 支持远程构建与服务器一键部署


💡 推荐实践

  • 可以扩展 docker-compose,加入 MySQL、Nginx 等模块;

  • 构建镜像时使用 CI/CD 工具(如 Jenkins、GitHub Actions)自动化;

  • 在服务器上配置 Nginx 反向代理,实现 HTTPS 部署。


📘 总结一句话:

从 IDEA 到 Linux,只需一条命令 docker-compose up -d,Spring Boot + Redis 全自动运行!

相关推荐
倔强的石头10632 分钟前
【Linux指南】进程通信系列(二):匿名管道 —— pipe 的本质、fork 继承与四种读写规则
java·linux·运维
调试优选官38 分钟前
2026年IoT物联网开发赛道年度榜单深度解析:D-coding物联网系统定制与源码交付能力专项解读
java·物联网·struts·iot·开发经验
木井巳39 分钟前
【动态规划】三步问题
java·算法·leetcode·动态规划·推荐算法
小张成长计划..42 分钟前
【Linux】25:线程概念和控制
java·linux·jvm
蛋蛋的就会顺顺的10 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
需要82610 小时前
Spring Bean 生命周期:从实例化到销毁的完整钩子
java·后端·spring
小 黄 鸡10 小时前
HashMap 面试必会知识点详解(JDK 8)
java·面试·职场和发展
伯恩bourne12 小时前
Spring Boot Bean 注册的两种方式:@Component 家族 vs @Configuration + @Bean
java·spring boot·后端
silvamux_13 小时前
curl 测试 OpenAI 兼容 API 的完整流程
java·人工智能·缓存·ai·oneapi
省钱兄--zs13 小时前
深圳24小时自助健身房软硬件解决方案实战指南与开发流程详解
java·数据仓库·spring boot·小程序·架构