首页
/ Docker MySQL Cron Backup 项目教程

Docker MySQL Cron Backup 项目教程

2024-08-10 11:05:25作者:齐添朝

1. 项目的目录结构及介绍

docker-mysql-cron-backup/
├── Dockerfile
├── README.md
├── backup.sh
├── restore.sh
├── cron.d
│   └── mysql-backup
├── docker-compose.yml
└── .env.example
  • Dockerfile: 用于构建 Docker 镜像的文件。
  • README.md: 项目说明文档。
  • backup.sh: 用于执行数据库备份的脚本。
  • restore.sh: 用于恢复数据库的脚本。
  • cron.d/mysql-backup: 包含定时任务的配置文件。
  • docker-compose.yml: 用于定义和运行多容器 Docker 应用程序的文件。
  • .env.example: 环境变量示例文件。

2. 项目的启动文件介绍

Dockerfile

FROM alpine:latest

RUN apk add --no-cache mysql-client bash curl

COPY backup.sh /backup.sh
COPY restore.sh /restore.sh
COPY cron.d/mysql-backup /etc/cron.d/mysql-backup

RUN chmod 0644 /etc/cron.d/mysql-backup && \
    chmod +x /backup.sh && \
    chmod +x /restore.sh && \
    crontab /etc/cron.d/mysql-backup

CMD ["cron", "-f"]
  • FROM alpine:latest: 使用 Alpine Linux 作为基础镜像。
  • RUN apk add --no-cache mysql-client bash curl: 安装 MySQL 客户端、Bash 和 cURL。
  • COPY backup.sh /backup.sh: 将备份脚本复制到镜像中。
  • COPY restore.sh /restore.sh: 将恢复脚本复制到镜像中。
  • COPY cron.d/mysql-backup /etc/cron.d/mysql-backup: 将定时任务配置文件复制到镜像中。
  • RUN chmod 0644 /etc/cron.d/mysql-backup && chmod +x /backup.sh && chmod +x /restore.sh && crontab /etc/cron.d/mysql-backup: 设置文件权限并安装定时任务。
  • CMD ["cron", "-f"]: 启动定时任务。

docker-compose.yml

version: '3'
services:
  mysql-backup:
    image: fradelg/mysql-cron-backup
    container_name: mysql-backup
    environment:
      - MYSQL_HOST=db
      - MYSQL_USER=root
      - MYSQL_PASSWORD=my-secret-pw
      - MYSQL_DATABASE=my-db
      - CRON_TIME=0 0 * * *
    volumes:
      - ./backup:/backup
    depends_on:
      - db

  db:
    image: mysql:latest
    container_name: db
    environment:
      - MYSQL_ROOT_PASSWORD=my-secret-pw
      - MYSQL_DATABASE=my-db
    volumes:
      - ./mysql-data:/var/lib/mysql
  • version: '3': 指定 Docker Compose 文件版本。
  • services: 定义服务。
    • mysql-backup: 备份服务。
      • image: fradelg/mysql-cron-backup: 使用预构建的镜像。
      • container_name: mysql-backup: 容器名称。
      • environment: 环境变量,包括数据库连接信息和定时任务时间。
      • volumes: 挂载备份目录。
      • depends_on: 依赖于 db 服务。
    • db: MySQL 数据库服务。
      • image: mysql:latest: 使用 MySQL 官方镜像。
      • container_name: db: 容器名称。
      • environment: 环境变量,包括数据库 root 密码和数据库名称。
      • volumes: 挂载数据库数据目录。

3. 项目的配置文件介绍

.env.example

MYSQL_HOST=db
MYSQL_USER=root
MYSQL_PASSWORD=my-secret-pw
MYSQL_DATABASE=my-db
CRON_TIME=0 0 * * *
  • MYSQL_HOST: MySQL 主机地址。
  • **MYSQL
登录后查看全文
热门项目推荐