Docker-compose 搭建 LNMP项目,并实现数据库备份
时间: 2024-05-03 08:23:11 浏览: 124
一、准备工作
1. 安装Docker和Docker Compose;
2. 在本地创建一个项目文件夹,例如:/home/project;
3. 在项目文件夹中创建以下文件夹:
- /data:用于存储数据库备份文件;
- /nginx:用于存放Nginx配置文件;
- /php:用于存放PHP配置文件;
- /mysql:用于存放MySQL配置文件和数据文件。
二、创建Docker Compose文件
在项目文件夹中创建docker-compose.yml文件,内容如下:
```
version: '3'
services:
nginx:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./nginx:/etc/nginx/conf.d
- ./php:/php
- ./data:/data
depends_on:
- php
php:
image: php:7.4-fpm
volumes:
- ./php:/usr/local/etc/php/conf.d
- ./html:/var/www/html
- ./data:/data
depends_on:
- mysql
mysql:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root
volumes:
- ./mysql:/var/lib/mysql
- ./data:/data
```
三、创建Nginx配置文件
在项目文件夹中创建nginx/default.conf文件,内容如下:
```
server {
listen 80;
server_name localhost;
root /var/www/html;
location / {
index index.php index.html;
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
include fastcgi_params;
}
}
```
四、创建PHP配置文件
在项目文件夹中创建php/php.ini文件,内容如下:
```
upload_max_filesize = 100M
post_max_size = 100M
memory_limit = 512M
date.timezone = Asia/Shanghai
```
五、创建MySQL配置文件
在项目文件夹中创建mysql/my.cnf文件,内容如下:
```
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default_storage_engine=INNODB
innodb_file_per_table=1
lower_case_table_names=1
```
六、启动容器
在项目文件夹中执行以下命令启动容器:
```
docker-compose up -d
```
七、备份数据库
在项目文件夹中创建backup.sh文件,内容如下:
```
#!/bin/bash
docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /data/backup.sql
```
执行以下命令,将备份脚本复制到容器中:
```
docker cp backup.sh mysql:/root/backup.sh
```
然后在容器中执行以下命令,给备份脚本添加执行权限:
```
chmod +x /root/backup.sh
```
接下来,在容器中执行以下命令,测试备份脚本是否正常工作:
```
./root/backup.sh
```
备份文件将保存在/data/backup.sql中。您可以通过以下命令将备份文件复制到本地:
```
docker cp mysql:/data/backup.sql /home/project/data/backup.sql
```
这样,您就成功地在Docker Compose中搭建了LNMP项目,并实现了数据库备份。