CRMEB Docker容器化部署:一键部署生产环境的完整方案

CRMEB Docker容器化部署:一键部署生产环境的完整方案

【免费下载链接】crmeb_java Java商城 免费 开源 CRMEB商城JAVA版,SpringBoot + Maven + Swagger + Mybatis Plus + Redis + Uniapp +Vue+elementUI 包含移动端、小程序、PC后台、Api接口;有产品、用户、购物车、订单、积分、优惠券、营销、余额、权限、角色、系统设置、组合数据、可拖拉拽的form表单等模块,大量的减少了二开的成本。 【免费下载链接】crmeb_java 项目地址: https://gitcode.com/GitHub_Trending/cr/crmeb_java

CRMEB开源商城系统Java版是一款功能强大的电商平台解决方案,基于SpringBoot + Vue + Uni-app技术栈开发。本文将为您详细介绍如何使用Docker容器化技术快速部署CRMEB商城系统,实现生产环境的一键部署。

🚀 为什么选择Docker部署CRMEB?

Docker容器化部署为CRMEB商城系统带来了诸多优势:

  • 环境一致性:确保开发、测试、生产环境完全一致
  • 快速部署:分钟级完成整个系统的部署
  • 资源隔离:各服务独立运行,互不影响
  • 易于扩展:支持水平扩展和负载均衡
  • 简化运维:统一的部署和管理方式

📦 系统架构与组件

CRMEB系统采用微服务架构,主要包含以下组件:

  • crmeb-admin:后台管理服务(SpringBoot)
  • crmeb-front:前端API服务(SpringBoot)
  • MySQL:数据库服务
  • Redis:缓存和会话管理
  • Nginx:反向代理和静态资源服务

🔧 部署前准备

环境要求

  • Docker 20.10+ 和 Docker Compose
  • 至少4GB内存
  • 20GB磁盘空间
  • Linux/Windows/macOS系统

项目克隆

git clone https://gitcode.com/GitHub_Trending/cr/crmeb_java
cd crmeb_java

🐳 Docker Compose部署方案

1. 创建Docker网络

docker network create crmeb-network

2. 编写Docker Compose文件

创建 docker-compose.yml 文件:

version: '3.8'

services:
  # MySQL数据库
  mysql:
    image: mysql:5.7
    container_name: crmeb-mysql
    environment:
      MYSQL_ROOT_PASSWORD: crmeb123456
      MYSQL_DATABASE: crmeb_db
    volumes:
      - mysql_data:/var/lib/mysql
      - ./sql/Crmeb_1.3.4.sql:/docker-entrypoint-initdb.d/init.sql
    networks:
      - crmeb-network
    restart: always

  # Redis缓存
  redis:
    image: redis:6-alpine
    container_name: crmeb-redis
    volumes:
      - redis_data:/data
    networks:
      - crmeb-network
    restart: always

  # 后台管理服务
  admin-service:
    build:
      context: ./crmeb/crmeb-admin
      dockerfile: Dockerfile
    container_name: crmeb-admin
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/crmeb_db
      SPRING_DATASOURCE_USERNAME: root
      SPRING_DATASOURCE_PASSWORD: crmeb123456
      SPRING_REDIS_HOST: redis
    ports:
      - "8080:8080"
    depends_on:
      - mysql
      - redis
    networks:
      - crmeb-network
    restart: always

  # 前端API服务
  front-service:
    build:
      context: ./crmeb/crmeb-front
      dockerfile: Dockerfile
    container_name: crmeb-front
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://mysql:3306/crmeb_db
      SPRING_DATASOURCE_USERNAME: root
      SPRING_DATASOURCE_PASSWORD: crmeb123456
      SPRING_REDIS_HOST: redis
    ports:
      - "8081:8081"
    depends_on:
      - mysql
      - redis
    networks:
      - crmeb-network
    restart: always

  # Nginx反向代理
  nginx:
    image: nginx:alpine
    container_name: crmeb-nginx
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf
      - ./admin/dist:/usr/share/nginx/html/admin
      - ./app/dist:/usr/share/nginx/html/app
    ports:
      - "80:80"
      - "443:443"
    depends_on:
      - admin-service
      - front-service
    networks:
      - crmeb-network
    restart: always

volumes:
  mysql_data:
  redis_data:

networks:
  crmeb-network:
    external: true

3. 创建Dockerfile文件

crmeb/crmeb-admin 目录下创建 Dockerfile

FROM openjdk:8-jdk-alpine

VOLUME /tmp

ARG JAR_FILE=target/*.jar

COPY ${JAR_FILE} app.jar

ENTRYPOINT ["java","-jar","/app.jar"]

EXPOSE 8080

同样在 crmeb/crmeb-front 目录下创建类似的Dockerfile。

4. 配置Nginx反向代理

创建 nginx.conf 文件:

events {
    worker_connections 1024;
}

http {
    upstream admin {
        server admin-service:8080;
    }

    upstream front {
        server front-service:8081;
    }

    server {
        listen 80;
        server_name localhost;

        # 后台管理界面
        location /admin {
            proxy_pass http://admin;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }

        # API接口
        location /api {
            proxy_pass http://front;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }

        # 静态资源
        location / {
            root /usr/share/nginx/html;
            index index.html index.htm;
        }
    }
}

🚀 一键部署执行

构建和启动服务

# 构建项目
mvn clean package -DskipTests

# 启动所有服务
docker-compose up -d

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs -f

验证部署

# 检查服务健康状态
curl http://localhost:8080/actuator/health
curl http://localhost:8081/actuator/health

# 访问管理后台
echo "管理后台: http://localhost/admin"
echo "API文档: http://localhost:8080/swagger-ui.html"

⚙️ 环境配置优化

生产环境配置

创建 application-prod.yml 配置文件:

spring:
  datasource:
    url: jdbc:mysql://mysql:3306/crmeb_db
    username: root
    password: ${DB_PASSWORD}
    hikari:
      maximum-pool-size: 20
      minimum-idle: 5
      
  redis:
    host: redis
    port: 6379
    timeout: 3000
    lettuce:
      pool:
        max-active: 20
        max-wait: -1
        max-idle: 10
        min-idle: 0

server:
  port: 8080
  compression:
    enabled: true
    mime-types: text/html,text/xml,text/plain,text/css,text/javascript,application/javascript,application/json
    min-response-size: 1024

🔍 常见问题排查

1. 数据库连接问题

# 检查MySQL容器状态
docker exec -it crmeb-mysql mysql -uroot -pcrmeb123456

# 查看数据库初始化日志
docker logs crmeb-mysql

2. 服务启动失败

# 查看具体服务日志
docker logs crmeb-admin
docker logs crmeb-front

# 重启单个服务
docker-compose restart admin-service

3. 端口冲突处理

如果80端口被占用,可以修改docker-compose.yml中的端口映射:

ports:
  - "8088:80"

📊 监控和维护

资源监控

# 查看容器资源使用情况
docker stats

# 查看服务日志
docker-compose logs --tail=100

# 备份数据库
docker exec crmeb-mysql mysqldump -uroot -pcrmeb123456 crmeb_db > backup.sql

日常维护命令

# 更新服务
docker-compose pull
docker-compose up -d

# 停止服务
docker-compose down

# 清理资源
docker system prune -a

🎯 部署成功验证

部署完成后,通过以下方式验证:

  1. 访问管理后台:http://localhost/admin
  2. 检查API接口:http://localhost:8080/api/v1/public/index
  3. 查看Swagger文档:http://localhost:8080/swagger-ui.html
  4. 验证数据库连接:确保数据表正确初始化
  5. 测试Redis连接:验证缓存功能正常

CRMEB Docker部署架构

💡 最佳实践建议

  1. 使用环境变量:敏感信息通过环境变量配置
  2. 定期备份:设置数据库自动备份策略
  3. 监控告警:配置容器健康检查和告警
  4. 日志收集:使用ELK或EFK收集日志
  5. 安全加固:定期更新基础镜像和安全补丁

通过本文介绍的Docker容器化部署方案,您可以快速将CRMEB商城系统部署到生产环境,享受容器化带来的便利和稳定性。这种部署方式不仅简化了运维工作,还为系统的弹性扩展和高可用性提供了坚实基础。

【免费下载链接】crmeb_java Java商城 免费 开源 CRMEB商城JAVA版,SpringBoot + Maven + Swagger + Mybatis Plus + Redis + Uniapp +Vue+elementUI 包含移动端、小程序、PC后台、Api接口;有产品、用户、购物车、订单、积分、优惠券、营销、余额、权限、角色、系统设置、组合数据、可拖拉拽的form表单等模块,大量的减少了二开的成本。 【免费下载链接】crmeb_java 项目地址: https://gitcode.com/GitHub_Trending/cr/crmeb_java

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值