若依 - 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 全自动运行!

相关推荐
南方的狮子先生1 天前
【C++】C++文件读写
java·开发语言·数据结构·c++·算法·1024程序员节
bemyrunningdog1 天前
IntelliJ IDEA导出WAR包全指南
java·ide·intellij-idea
虫师c1 天前
List vs Set:深入剖析Java两大集合的核心区别与实战应用
java·数据结构·list·set·java集合
emiya_saber1 天前
Linux 硬盘分区管理
java·linux·网络
量子炒饭大师1 天前
【一天一个计算机知识】—— 【编程百度】预处理指令
java·开发语言
q***51891 天前
Spring Boot 条件注解:@ConditionalOnProperty 完全解析
java·spring boot·后端
任子菲阳1 天前
学Java第四十四天——Map实现类的源码解析
java·开发语言
听风吟丶1 天前
Java 11+ HttpClient 实战:从 HttpURLConnection 到现代 HTTP 客户端的全面升级
java·开发语言·http
Felix_XXXXL1 天前
集成RabbitMQ+MQ常用操作
java·后端