665 字
3 分钟
Docker部署数据库管理面板和定时自动备份
部署phpmyadmin
数据库管理面板
docker run --name phpmyadmin -d -p 7890:80 phpmyadmin:latest
环境变量参数:
-p 7890:80 // 映射面板的端口。
-e PMA_HOST=172.17.0.1 // 指定连接到的数据库地址。
-e PMA_PORT=3306 // 指定 MySQL 数据库的端口号。
-e PMA_USER=root // 指定登录数据库的用户名。
-e PMA_PASSWORD=123456 // 指定登录数据库的密码。
-e PMA_DATABASE=mysqldb // 默认连接的数据库名称
--network my_network // 指定容器网络
docker-compose.yaml
部署
连接到指定数据库示例
services:
phpmyadmin:
image: phpmyadmin:latest
container_name: phpmyadmin
ports:
- "7890:80"
environment:
- UPLOAD_LIMIT=512M # 设置上传文件大小限制
# 数据库连接设置
- PMA_HOST=mysql # MySQL 地址
- PMA_PORT=3306 # MySQL 端口号
- PMA_DATABASE=mysql # 默认连接的数据库名称
networks:
- home_default # 连接到指定网络
networks:
home_default:
external: true
进入面板使用root用户名登录,密码就是数据库root密码
如果要使用宿主机网络则移除网络配置,修改为network_mode: host
查看容器网络的命令
docker inspect -f '{{.HostConfig.NetworkMode}}' 容器名称或ID
Docker部署数据库定时自动备份工具
支持mysql
和mariadb
数据库
services:
backup-db:
image: fradelg/mysql-cron-backup
container_name: backup-db
environment:
- MYSQL_HOST=mysql # 数据库地址
- MYSQL_PORT=3306 # 数据库端口
- MYSQL_USER=db_user # 数据库用户名
- MYSQL_PASS=db_password # 数据库密码
- MYSQL_DATABASE=db_name # 数据库名称
- MAX_BACKUPS=10 # 保留的备份数量,旧的备份将被清理
- CRON_TIME=0 3 * * * # 每天凌晨3点自动执行备份
volumes:
- ./backup:/backup # 挂载本地目录用于保存备份
restart: always
networks:
- home_default # 连接到指定网络
networks:
home_default:
external: true
恢复备份的数据库
docker container exec backup-db /restore.sh ./backup/<your_sql_backup_gz_file>
恢复当前目录内的
./backup/<your_sql_backup_gz_file>
文件,需替换具体文件名称
如果恢复成功,会输出
Restore succeeded
否则会输出Restore failed
添加变量
- INIT_BACKUP=1
则在容器启动时立即创建备份
如果要使用宿主机网络则移除网络配置,增加
network_mode: host
配置
再推荐一个轻量级数据库管理面板
支持更多数据库
docker run -d --name adminer --network mynetwork -p 8080:8080 adminer:latest
加入到指定网络的变量:--network mynetwork
host网络模式:--network host
查看容器网络的命令
docker inspect -f '{{.HostConfig.NetworkMode}}' 容器名称或ID
修改导入大小和上传大小,修改容器内的php.ini
变量
max_input_vars = 1000 # POST数据和GET数据的最大值
upload_max_filesize = 128M # PHP最大上传文件大小
post_max_size = 128M # 服务器最大数据量和文件大小
memory_limit = 128M # PHP内存占用限制
修改命令
docker exec -u 0 -it adminer /bin/sh
echo "max_input_vars = 5000" > /etc/php/7.4/cli/conf.d/custom-php.ini
echo "upload_max_filesize = 512M" >> /etc/php/7.4/cli/conf.d/custom-php.ini
echo "post_max_size = 512M" >> /etc/php/7.4/cli/conf.d/custom-php.ini
echo "memory_limit = 512M" >> /etc/php/7.4/cli/conf.d/custom-php.ini
重启
docker restart adminer