企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
[TOC] ## 一、【示例】服务关闭前备份数据库 ``` mysql: container_name: docker-wp-mysql-8 image: 'mysql:8.0' cpus: '2' cpu_shares: 2048 working_dir: /docker-wp/mysql8 environment: MYSQL_ROOT_PASSWORD: xuguo MYSQL_DATABASE: wp MYSQL_USER: xuguo MYSQL_PASSWORD: xuguo MYSQL_SOCKET: /var/run/mysqld/mysqld.sock # 当需要指定时才定义; volumes: - db_data:/var/lib/mysql - db_mysqld:/var/run/mysqld - /Users/jerryxu/wwwroot/cache/test/docker-wp/mysql8/shellBackUp:/shellBackUp - /Users/jerryxu/wwwroot/cache/test/docker-wp/mysql8/backup:/backup command: | /bin/bash -c "trap 'mysqladmin -h mysql -uroot -pMYSQL_ROOT_PASSWORD shutdown; /shellBackUp/backup.sh' EXIT; /usr/sbin/mysqld" ports: - '61002:3306' networks: - my-network ``` 这段代码启动了一个名为`docker-wp-mysql-8`的 MySQL 容器,使用了 MySQL 8.0 的 Docker 镜像。在容器启动时,使用`trap`命令捕获容器退出信号,并在容器退出时执行备份脚本和优雅地关闭 MySQL 服务器。容器将 MySQL 数据库数据目录、MySQL 服务器套接字目录、备份脚本路径和备份文件路径挂载到容器中。MySQL 服务器的 3306端口映射到主机的 61002 端口。 ### 备份脚本 `````` # Define backup file name BACKUP_FILE\="/backup/backup-$(date +%Y-%m-%d_%H-%M-%S).sql" BACKUP_ARCHIVE\="/backup/backup-$(date +%Y-%m-%d_%H-%M-%S).tar.gz" # Create backup directory mkdir -p /backup # Backup MySQL database mysqldump --all-databases -uroot -p"${MYSQL_ROOT\_PASSWORD}" > "${BACKUP_FILE}" --socket="${MYSQL\_SOCKET}" # Archive backup file tar -czvf "${BACKUP_ARCHIVE}" "${BACKUP_FILE}" \# Remove backup file rm "${BACKUP_FILE}" `````` ## 二、绑定数据块到本地目录 `````` volumes: db\_data: driver: local driver\_opts: type: none o: bind device: /Users/jerryxu/wwwroot/cache/test/docker-wp/mysql8/db-data ``````