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

docker-compose 环境下备份数据库

要求实现在web页面备份数据库,那当然是mysqldump了,一开始以为必须进入mysql容器执行,其实只需要在web容器中 执行mysqldump 就可以了

在这里插入图片描述

dockerfile 如下:

# 基础镜像
FROM openjdk:17-slim
#FROM eclipse-temurin:8-jre
# author
MAINTAINER whp404#RUN mkdir -p /opt/app \
#   && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
#    && echo "Asia/Shanghai" > /etc/timezone RUN sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN sed -i 's/security.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.listRUN mkdir -p /opt/app \&& cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \&& echo "Asia/Shanghai" > /etc/timezone \&& apt-get update && \apt-get install -y \curl \wget \vim \default-mysql-client \iproute2 \iputils-ping \net-tools \&& rm -rf /var/lib/apt/lists/*WORKDIR /opt/app# 复制jar文件到路径
COPY bootstrap-2.0.jar app.jar
# 启动应用
ENTRYPOINT ["java","-jar","/opt/app/app.jar"]
CMD ["--spring.profiles.active=docker"]

java代码如下:

        PrintWriter printWriter = null;BufferedReader bufferedReader = null;try {printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(savePath + backup.getBackupName() + ".sql"), StandardCharsets.UTF_8));Process process = Runtime.getRuntime().exec(" mysqldump -h" + ip + " -P" + host + " -u" + userName + " -p" + password + " --default-character-set=utf8 " + databaseName);InputStreamReader inputStreamReader = new InputStreamReader(process.getInputStream(), StandardCharsets.UTF_8);bufferedReader = new BufferedReader(inputStreamReader);String line;while((line = bufferedReader.readLine())!= null){printWriter.println(line);}printWriter.flush();if(process.waitFor() == 0){//0 表示线程正常终止。File file = new File(savePath + backup.getBackupName() + ".sql");backup.setBackUpSize(readableFileSize(file.length()));backup.setId(IdsUtils.createStrId());backup.setCreateTime(new Date());backup.setUpdateTime(new Date());backupMapper.insert(backup);return true;}} catch (InterruptedException e) {e.printStackTrace();} finally {try {if (bufferedReader != null) {bufferedReader.close();}if (printWriter != null) {printWriter.close();}} catch (IOException e) {e.printStackTrace();}}

相关文章:

  • [灵龙AI API] AI生成视频API:文生视频 – 第2篇
  • 爬虫IP代理效率优化:策略解析与实战案例
  • Rk3568驱动开发_设备树点亮LED_11
  • 剑指offer11_矩阵中的路径
  • AI时代新词-零样本学习(Zero-Shot Learning):AI的未来趋势
  • 4 通道1250MSPS‐16bit DAC 回放板
  • IPD流程落地:项目任务书Charter开发
  • MQTT通信协议
  • Guard Trace 值得吗?
  • ASP.NET Core OData 实践——Lesson2增删改查Entity和EntitySet(C#)
  • 基于Qlearning强化学习的二阶弹簧动力学模型PID控制matlab性能仿真
  • OSC协议简介、工作原理、特点、数据的接收和发送
  • 《数据结构与算法分析》读书笔记:第一章 引 论
  • 如何搭建perfino监控(分析java服务性能)
  • 第三十七天打卡
  • 鸿蒙OSUniApp 制作动态生成的轮播图#三方框架 #Uniapp
  • Monorepo 管理
  • 信创名录取消的背景下,如何认定信创产品符合信创要求?
  • 基于 STC89C52 单片机的机动车里程表设计与实现
  • 配置Maven环境(全局)
  • 网站续费收多少合适/百度推广登陆网址
  • 做淘宝设计能做网站吗/江苏百度推广代理商
  • 网站如何不被收录/平台运营
  • 菲律宾离中国多远/seo 百度网盘
  • 做网站代理能赚钱吗/关键词排名优化公司哪家强
  • 黄州做网站的/seovip培训