Docker-Docker本地启动RuoYi服务后端

Docker-Docker本地启动RuoYi服务后端

一、根目录下配置dockerfile文件

# 第一阶段:Maven多模块构建
FROM maven:3.8.6-openjdk-11 AS builder
WORKDIR /app
COPY . .
# 阿里云镜像加速(需确保settings.xml存在)
RUN mkdir -p /root/.m2 && \
	cp /usr/share/maven/conf/settings.xml /root/.m2/
# 构建核心模块(包含druid配置所在模块)
RUN mvn -T 1C clean package -DskipTests \
	-pl ruoyi-admin,ruoyi-framework \
	-am

# 第二阶段:运行环境
FROM openjdk:11-jre-slim
WORKDIR /app
# 复制JAR和所有配置文件(含druid配置)
COPY --from=builder /app/ruoyi-admin/target/ruoyi-admin.jar .
COPY --from=builder /app/ruoyi-admin/src/main/resources/*.yml ./config/
# 时区与健康检查
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
	echo "Asia/Shanghai" > /etc/timezone
HEALTHCHECK --interval=30s --timeout=3s \
	CMD curl -f http://localhost:8080/login || exit 1
# 启动命令(强制激活prod环境)
ENTRYPOINT ["java","-jar", \
	"-Dspring.profiles.active=prod", \
	"-Dspring.config.location=classpath:/,file:/app/config/", \
	"ruoyi-admin.jar"]

二、ruoyi-admin\src\main\resources 下创建 application-prod.yml文件

# 数据源配置
spring:
  datasource:
	type: com.alibaba.druid.pool.DruidDataSource
	driverClassName: com.mysql.cj.jdbc.Driver
	druid:
	  validation-query: SELECT 1 FROM DUAL  # 确保数据库支持此语句
	  test-while-idle: true
	  # 主库数据源
	  master:
		url: jdbc:mysql://XXX:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
		username: XXX
		password: XXX
	  # 从库数据源
	  slave:
		# 从数据源开关/默认关闭
		enabled: false
		url:
		username:
		password:
	  # 初始连接数
	  initialSize: 5
	  # 最小连接池数量
	  minIdle: 10
	  # 最大连接池数量
	  maxActive: 20
	  # 配置获取连接等待超时的时间
	  maxWait: 60000
	  # 配置连接超时时间
	  connectTimeout: 30000
	  # 配置网络超时时间
	  socketTimeout: 60000
	  # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
	  timeBetweenEvictionRunsMillis: 60000
	  # 配置一个连接在池中最小生存的时间,单位是毫秒
	  minEvictableIdleTimeMillis: 300000
	  # 配置一个连接在池中最大生存的时间,单位是毫秒
	  maxEvictableIdleTimeMillis: 900000
	  # 配置检测连接是否有效
	  validationQuery: SELECT 1 FROM DUAL
	  testWhileIdle: true
	  testOnBorrow: false
	  testOnReturn: false
	  webStatFilter:
		enabled: true
	  statViewServlet:
		enabled: true
		# 设置白名单,不填则允许所有访问
		allow:
		url-pattern: /druid/*
		# 控制台管理用户名和密码
		login-username: XXX
		login-password: XXX
	  filter:
		stat:
		  enabled: true
		  # 慢SQL记录
		  log-slow-sql: true
		  slow-sql-millis: 1000
		  merge-sql: true
		wall:
		  config:
			multi-statement-allow: true
server:
  port: 8080

三、在Terminal 执行语句

# 启动服务
docker run -d -p 8080:8080 <镜像ID> 
# 查看容器状态
docker ps
posted @ 2025-06-03 11:06  skystrivegao  阅读(74)  评论(0)    收藏  举报