当前位置: 首页 > news >正文

使用 Docker Compose 部署 Spring Boot 应用:SmartAdmin 实战指南

文章目录

  • 前言
  • 一、项目概述
  • 二、配置文件详解
    • 1.Docker Compose 配置 (docker-compose.yml)
    • 2.Dockerfile 配置
    • 3.环境变量配置 (.env)可选
  • 三、部署步骤
    • 1.准备工作
    • 2.部署数据库和 Redis 服务
    • 3. 应用部署
  • 总结


前言

在现代应用开发中,容器化部署已成为标准实践。本文将详细介绍如何使用 Docker Compose 部署一个基于 Spring Boot 的 SmartAdmin 应用,涵盖从配置文件编写到实际部署的全过程。

Smart-Admin代码仓库:https://gitee.com/lab1024/smart-admin.git


一、项目概述

SmartAdmin 是一个基于 Spring Boot 的后台管理系统,我们需要将其容器化部署。部署环境包括:

  • Spring Boot 应用(本次使用 Java 17)
  • MySQL 8 数据库
  • Redis 缓存服务
  • 通过 1Panel 进行服务管理(可选)

为了快速实践,将文件统一放在一个目录/opt/1panel/docker/compose/smartadmin
包含文件:.env、Dockerfile、docker-compose.yml、jar包
在这里插入图片描述

二、配置文件详解

1.Docker Compose 配置 (docker-compose.yml)

${MYSQL_URL}是使用了env环境变量文件(可选),也可以直接将实际的参数填上去,如SPRING_DATA_REDIS_HOST=127.0.0.1

version: '3.8'services:smartadmin:build:context: .dockerfile: Dockerfileimage: smartadmin:latestcontainer_name: smartadmin-appports:- "11024:11024"environment:- SPRING_PROFILES_ACTIVE=test- SPRING_DATASOURCE_URL=${MYSQL_URL}- SPRING_DATASOURCE_USERNAME=${MYSQL_USER}- SPRING_DATASOURCE_PASSWORD=${MYSQL_PASSWORD}- SPRING_DATA_REDIS_HOST=${REDIS_HOST}- SPRING_DATA_REDIS_PORT=${REDIS_PORT}- SPRING_DATA_REDIS_PASSWORD=${REDIS_PASSWORD}- SPRING_DATA_REDIS_DATABASE=${REDIS_DATABASE}- JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8networks:- 1panel-networkrestart: unless-stoppednetworks:1panel-network:external: true

​配置解析:​​

  • 版本​​:使用 Docker Compose 3.8 版本
  • 服务构建​​:基于当前目录的 Dockerfile 构建镜像
  • 端口映射​​:将容器内 11024 端口映射到主机 11024 端口
  • 环境变量​​:配置 Spring Boot 的运行参数和数据库连接信息
  • 网络配置​​:使用外部网络 1panel-network实现容器间通信
  • 重启策略​​:除非手动停止,否则自动重启

2.Dockerfile 配置

FROM eclipse-temurin:17-jre-alpine# 创建应用目录
WORKDIR /app# 复制JAR包到容器
COPY sa-admin-test-3.0.0.jar app.jar# 暴露端口
EXPOSE 11024# 设置JVM参数
ENV JAVA_OPTS="-Xmx512m -Xms256m -XX:+UseG1GC"# 启动应用
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]

​配置解析:​​

  • 基础镜像​​:使用轻量级的 Eclipse Temurin 17 JRE Alpine 版本
  • 工作目录​​:设置 /app为工作目录
  • 应用部署​​:复制 JAR 文件并重命名为 app.jar
  • JVM 优化​​:配置堆内存和使用 G1 垃圾回收器
  • ​​启动命令​​:使用 Shell 形式启动 Java 应用

3.环境变量配置 (.env)可选

MYSQL_URL=jdbc:p6spy:mysql://mysql8:3306/smart_admin_v3?allowPublicKeyRetrieval=true&autoReconnect=true&useServerPreparedStmts=false&rewriteBatchedStatements=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai
MYSQL_USER=smart_admin
MYSQL_PASSWORD=smart_admin
REDIS_HOST=redis-1
REDIS_PORT=6379
REDIS_PASSWORD=123456
REDIS_DATABASE=0

配置解析:​​

  • ​​数据库连接​​:使用 P6Spy 监控 SQL,连接名为 mysql8的 MySQL 服务
  • 连接参数​​:配置了字符集、时区、SSL 等重要参数
  • ​​Redis 配置​​:连接名为 redis-1的 Redis 服务

三、部署步骤

1.准备工作

确保已安装 Docker 和 Docker Compose,并创建外部网络:

docker network create 1panel-network

2.部署数据库和 Redis 服务

在 1Panel 中部署 MySQL 8 和 Redis 服务,确保服务名与 .env文件中的配置一致。

3. 应用部署

在项目根目录(包含 docker-compose.yml、Dockerfile 和 .env 文件的目录)执行

# 构建并启动服务
docker-compose up -d# 查看服务状态
docker-compose ps# 查看日志
docker-compose logs -f smartadmin

总结

本文详细介绍了使用 Docker Compose 部署 Spring Boot 应用的完整流程。通过容器化部署,我们实现了:

  • ​​环境一致性​​:开发、测试、生产环境一致
  • ​快速部署​​:一键启动所有依赖服务
  • 资源隔离​​:各服务运行在独立容器中
  • ​​易于扩展​​:可快速水平扩展应用实例
    这种部署方式特别适合微服务架构和持续集成/持续部署(CI/CD)流程,能够显著提高开发和运维效率。
http://www.dtcms.com/a/552787.html

相关文章:

  • 徐州建设企业网站网站建设与网站制作
  • 拆解ASP.NET MVC 视图模型:为 View 量身定制的 “数据小票“
  • 使用Docker搭建DOClever接口管理平台
  • 2025年10月个人工作生活总结
  • 金仓售后服务体系:构建高可用数据库运维新范式
  • 融入现代消费生活 浦发故宫文化主题卡的传承与创新
  • Android Studio Narwhal 4:创建空应用报错 —— AAPT2 process unexpectedly exit 的排查与解决
  • 九寨:在山水间触摸生活的诗意
  • C++(23):延长for循环临时变量生命期
  • Android Studio gradle下载失败报错
  • 贵州 做企业网站的流程58同城最新消息招聘
  • Kubernetes 双层 Nginx 容器环境下的 CORS 问题及解决方案(极端情况)
  • Kimi发布新一代注意力架构!线性注意力实现75% KV缓存减少、6倍解码速度提升
  • 做电子商务系统网站建设wordpress图片加水印
  • 电机参数标幺化与定点计算在整数MCU上的实现
  • Rust开发之错误处理与日志记录结合(log crate使用)
  • 2025年11月1日(星期六)骑行笔架山
  • opencv 学习: 03 初识 cv:Mat
  • 数据结构(c++版):邻接矩阵的实现
  • 在华为TaiShan 200系列服务器基于CentOS 7.6/7.7创建虚拟机
  • Parallels Desktop 26.1.1 for Mac 秋叶QiuChenly中文解锁直装版,最好用的macOS虚拟机
  • Linux chmod权限速成指南
  • 企业网站建设市场的另一面写字就能赚钱做网站
  • 【已解决】解决CondaVerificationError:PyTorch安装包损坏问题
  • UI引擎里AceAbility::OnStart函数1
  • 卸载工具uninstall tool下载安装教程(附安装包)绿色版
  • Bug: 升级内核后有线网络无法使用
  • 帕金森症手绘图像分类数据集
  • 本地生活曝光缺失?GEO语义锚点来救场
  • Rust开发之Result枚举与?运算符简化错误传播