首页
/ JeecgBoot Docker部署指南:容器化快速上线

JeecgBoot Docker部署指南:容器化快速上线

2026-02-04 05:12:18作者:江焘钦

还在为JeecgBoot的复杂部署流程而头疼吗?每次部署都要配置MySQL、Redis、Nginx,还要处理各种环境依赖问题?本文将为你提供最完整的JeecgBoot Docker容器化部署方案,让你在10分钟内完成从源码到生产环境的快速上线!

通过本文,你将获得:

  • 🚀 一键式Docker Compose部署方案
  • 📦 前后端分离架构的完整容器化配置
  • 🔧 生产环境最佳实践配置
  • 🌐 国内镜像加速优化方案
  • 🛡️ 高可用架构设计指南

架构概览

JeecgBoot采用微服务架构,Docker部署方案包含以下核心组件:

flowchart TD
    A[用户请求] --> B[Nginx 前端]
    B --> C[SpringBoot 后端]
    C --> D[MySQL 数据库]
    C --> E[Redis 缓存]
    C --> F[PGVector 向量数据库]
    
    subgraph Docker Network
        B
        C
        D
        E
        F
    end

环境准备

系统要求

组件 最低要求 推荐配置
Docker 20.10+ 24.0+
Docker Compose 2.0+ 2.20+
内存 4GB 8GB+
磁盘空间 10GB 20GB+

安装必要工具

# 安装Docker
curl -fsSL https://get.docker.com | bash

# 安装Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# 验证安装
docker --version
docker-compose --version

项目结构解析

JeecgBoot的Docker部署包含两个核心配置文件:

1. 单机版部署 (docker-compose.yml)

适用于开发测试环境,包含基础服务组件。

2. 云原生版部署 (docker-compose-cloud.yml)

适用于生产环境,包含完整的微服务生态。

classDiagram
    class DockerCompose {
        +version: string
        +services: Service[]
        +networks: Network[]
    }
    
    class Service {
        +build: BuildConfig
        +environment: EnvVar[]
        +ports: PortMapping[]
        +depends_on: string[]
        +networks: string[]
    }
    
    class BuildConfig {
        +context: string
        +dockerfile: string
    }
    
    DockerCompose "1" *-- "*" Service
    Service "1" *-- "1" BuildConfig

详细部署步骤

步骤1:克隆项目并进入目录

git clone https://gitcode.com/jeecgboot/JeecgBoot
cd JeecgBoot

步骤2:配置Hosts文件(重要)

编辑 /etc/hosts 文件,添加以下内容:

127.0.0.1   jeecg-boot-system
127.0.0.1   jeecg-boot-mysql

步骤3:编译后端项目

cd jeecg-boot
mvn clean install -Pdocker

步骤4:编译前端项目

cd ../jeecgboot-vue3
pnpm install
pnpm run build:docker

步骤5:启动Docker容器

# 单机版部署
docker-compose up -d

# 或者云原生版部署
docker-compose -f docker-compose-cloud.yml up -d

核心服务配置详解

MySQL数据库配置

jeecg-boot-mysql:
  build:
    context: ./jeecg-boot/db
  environment:
    MYSQL_ROOT_PASSWORD: root
    MYSQL_ROOT_HOST: '%'
    TZ: Asia/Shanghai
  ports:
    - 13306:3306
  command:
    --character-set-server=utf8mb4
    --collation-server=utf8mb4_general_ci
    --lower_case_table_names=1

Redis缓存配置

jeecg-boot-redis:
  image: registry.cn-hangzhou.aliyuncs.com/jeecgdocker/redis:5.0
  container_name: jeecg-boot-redis
  networks:
    - jeecg-boot

后端服务配置

FROM registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/java:17-anolis

RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
WORKDIR /jeecg-boot
EXPOSE 8080

ADD ./target/jeecg-system-start-3.8.2.jar ./
CMD sleep 60;java -Dfile.encoding=UTF-8 -jar jeecg-system-start-3.8.2.jar

前端Nginx配置

FROM registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/nginx

RUN echo "server {
    listen       80;
    location /jeecgboot/ {
        proxy_pass http://jeecg-boot-system:8080/jeecg-boot/;
        proxy_set_header Host jeecg-boot-system;
        proxy_set_header X-Real-IP \$remote_addr;
    }
    location / {
        root /var/www/html/;
        index index.html index.htm;
        if (!-e \$request_filename) {
            rewrite ^(.*)\$ /index.html?s=\$1 last;
        }
    }
}" > /etc/nginx/conf.d/default.conf

ADD dist/ /var/www/html/
EXPOSE 80

网络架构设计

JeecgBoot使用自定义Docker网络确保服务间安全通信:

flowchart LR
    subgraph "Docker Network: jeecg_boot"
        A[前端Nginx:80]
        B[后端SpringBoot:8080]
        C[MySQL:3306]
        D[Redis:6379]
        E[PGVector:5432]
    end
    
    A -- HTTP反向代理 --> B
    B -- 数据库连接 --> C
    B -- 缓存访问 --> D
    B -- 向量搜索 --> E

健康检查与监控

服务健康状态检查

# 查看所有容器状态
docker ps -a

# 查看特定容器日志
docker logs jeecg-boot-system

# 进入容器调试
docker exec -it jeecg-boot-system /bin/bash

关键端口监控表

服务 容器端口 映射端口 健康检查
前端Nginx 80 80 http://localhost
后端服务 8080 8080 http://localhost:8080/jeecg-boot
MySQL 3306 13306 mysql -h127.0.0.1 -P13306 -uroot -proot
Redis 6379 6379 redis-cli -h 127.0.0.1 -p 6379
PGVector 5432 5432 psql -h 127.0.0.1 -U postgres

生产环境优化建议

1. 资源限制配置

deploy:
  resources:
    limits:
      memory: 2G
      cpus: '2'
    reservations:
      memory: 1G
      cpus: '1'

2. 日志管理

logging:
  driver: "json-file"
  options:
    max-size: "10m"
    max-file: "3"

3. 健康检查配置

healthcheck:
  test: ["CMD", "curl", "-f", "http://localhost:8080/jeecg-boot"]
  interval: 30s
  timeout: 10s
  retries: 3
  start_period: 40s

常见问题排查

问题1:端口冲突

症状: Docker启动失败,提示端口已被占用 解决方案:

# 查看占用端口的进程
lsof -i :8080

# 停止冲突进程或修改docker-compose中的端口映射
ports:
  - 8081:8080  # 修改外部端口

问题2:数据库连接失败

症状: 后端服务启动时报数据库连接错误 解决方案:

# 检查MySQL容器是否正常运行
docker logs jeecg-boot-mysql

# 检查网络连通性
docker network inspect jeecg_boot

问题3:前端路由404

症状: 刷新页面后出现404错误 解决方案: Nginx配置已包含SPA路由重写规则,确保配置正确。

性能调优指南

数据库性能优化

command:
  --innodb_buffer_pool_size=1G
  --innodb_log_file_size=256M
  --max_connections=1000
  --query_cache_size=64M

JVM内存优化

CMD java -Xms1g -Xmx2g -XX:+UseG1GC -jar jeecg-system-start-3.8.2.jar

Nginx性能优化

worker_processes auto;
worker_connections 1024;
keepalive_timeout 65;
gzip on;
gzip_comp_level 6;

扩展部署方案

Kubernetes部署(进阶)

对于生产环境,建议使用Kubernetes进行容器编排:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: jeecg-boot-system
spec:
  replicas: 3
  selector:
    matchLabels:
      app: jeecg-boot-system
  template:
    metadata:
      labels:
        app: jeecg-boot-system
    spec:
      containers:
      - name: jeecg-boot-system
        image: jeecg-boot-system:latest
        ports:
        - containerPort: 8080

总结

通过本文的Docker部署方案,你可以:

快速搭建:10分钟内完成全栈环境部署
环境一致:消除"在我机器上能运行"的问题
易于维护:版本控制和配置即代码
灵活扩展:支持单机和云原生两种部署模式
生产就绪:包含性能优化和监控方案

JeecgBoot的Docker化部署不仅大大简化了部署流程,更为企业的数字化转型提供了坚实的技术基础。现在就开始你的容器化之旅吧!

提示:部署完成后,建议等待1-2分钟让所有服务完全启动,然后访问 http://localhost 体验完整的JeecgBoot低代码平台。

登录后查看全文
热门项目推荐
相关项目推荐