docker 安装最小化带数据库多网站 示例,安装前看看目录结构,如需要修改,先研究一下。
Debian 11、12系统适用,与其它方式安装不冲突
一、目录结构
/home/html/docker/web1/
├── docker-compose.yml
├── Caddyfile
├── public/(网站文件存放目录public)
├── public1/(网站文件存放目录public1)
├── public2/(网站文件存放目录public2)
├── public3/(网站文件存放目录public3)
├── public4/(网站文件存放目录public4)
等
├── php/
│ └── Dockerfile
└── data/ (一个数据库,安装后数据库文件会自动生成)
二、安装前准备:
1、相关升级
apt update && apt upgrade -y && apt install -y curl wget unzip zip2、安装好 docker compose
curl -fsSL https://get.docker.com | sh && ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/local/bin三、创建目录结构和三个需要文件
1、创建目录并给予相应775权限
sudo mkdir -p /home/html/docker/web1/php/安装第1个网站目录public
sudo mkdir -p /home/html/docker/web1/public && sudo chown -R www-data:www-data /home/html/docker/web1/public && sudo chmod -R 775 /home/html/docker/web1/public安装第2个网站目录public1
sudo mkdir -p /home/html/docker/web1/public1 && sudo chown -R www-data:www-data /home/html/docker/web1/public1 && sudo chmod -R 775 /home/html/docker/web1/public1安装第3个网站目录public2
sudo mkdir -p /home/html/docker/web1/public2 && sudo chown -R www-data:www-data /home/html/docker/web1/public2 && sudo chmod -R 775 /home/html/docker/web1/public2安装第4个网站目录public3
sudo mkdir -p /home/html/docker/web1/public3 && sudo chown -R www-data:www-data /home/html/docker/web1/public3 && sudo chmod -R 775 /home/html/docker/web1/public3安装第5个网站目录public4,以此类推
sudo mkdir -p /home/html/docker/web1/public4 && sudo chown -R www-data:www-data /home/html/docker/web1/public4 && sudo chmod -R 775 /home/html/docker/web1/public42、添加 web1 775权限
sudo chown -R www-data:www-data /home/html/docker/web1 && sudo chmod -R 775 /home/html/docker/web1
3、下载三个需要文件
下载docker-compose.yml文件或复制创建【一定要修改数据库中的两个密码,安装多站点时要相应修改配置 】
cd /home/html/docker/web1/
wget https://raw.githubusercontent.com/wszx123/gongjuxiang/refs/heads/main/docker/typecho/docker-compose.yml复制创建,以两个网站和一个数据库为例,3、4或多个类似修改添加
services:
caddy:
image: caddy:2-alpine
container_name: caddy_web1
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./public:/srv/public
- ./public1:/srv/public1
- caddy_data:/data
- caddy_config:/config
depends_on:
- php
php:
build: ./php
container_name: php_web1
volumes:
- ./public:/srv/public
- ./public1:/srv/public1
depends_on:
- db
db:
image: mariadb:10.7
container_name: mariadb_web1
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpass123
MYSQL_DATABASE: web1
MYSQL_USER: web1
MYSQL_PASSWORD: web1pass123
volumes:
- ./data:/var/lib/mysql
volumes:
caddy_data:
caddy_config:
复制创建,以两个网站和两个数据库为例,3、4或多个类似修改添加
services:
caddy:
image: caddy:2-alpine
container_name: caddy_web1
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./public:/srv/public
- ./public1:/srv/public1
- caddy_data:/data
- caddy_config:/config
depends_on:
- php
php:
build: ./php
container_name: php_web1
volumes:
- ./public:/srv/public
- ./public1:/srv/public1
depends_on:
- db1
- db2
db1:
image: mariadb:10.7
container_name: mariadb_web1
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpass123
MYSQL_DATABASE: web1
MYSQL_USER: web1
MYSQL_PASSWORD: web1pass123
volumes:
- ./data1:/var/lib/mysql
db2:
image: mariadb:10.7
container_name: mariadb_web2
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpass123
MYSQL_DATABASE: web2
MYSQL_USER: web2
MYSQL_PASSWORD: web2pass123
volumes:
- ./data2:/var/lib/mysql
volumes:
caddy_data:
caddy_config:
下载Caddyfile文件【下载后记事本打开,修改好解析的域名,安装多站点时也要添加相应域名配置 】
cd /home/html/docker/web1/
wget https://raw.githubusercontent.com/wszx123/gongjuxiang/refs/heads/main/docker/typecho/Caddyfile或主动创建Caddyfile文件
web1.example.com {
root * /srv/public #安装路径,备注什么网站
php_fastcgi php:9000
file_server
}下载Dockerfile文件
cd /home/html/docker/web1/php/
wget https://raw.githubusercontent.com/wszx123/gongjuxiang/refs/heads/main/docker/typecho/Dockerfile或主动创建Dockerfile文件
FROM php:8.1-fpm
RUN docker-php-ext-install pdo pdo_mysql mysqli
WORKDIR /srv
4、下载官方 Typecho 安装包或上传后解压【已测试正常】, 搭建其它网站自己上传
cd /home/html/docker/web1/public/
wget https://github.com/typecho/typecho/releases/download/v1.2.1/typecho.zip
unzip typecho.zip
rm typecho.zip四、以上步骤完成后启动【1检查域名配置文件 Caddyfile 是否配置好,2检查 docker-compose.yml 中的数据库密码等是否修改,如果是 多站点时,是否已添加多站点的配置】
cd /home/html/docker/web1/
docker-compose up -d五、打开网站安装,安装时如会出现 uploads 权限问题,给予权限,其它小问题按提示解决或刷新网页重新安装
数据库地址: *db* 或用默认
数据库名: *web1*
用户名: *web1*
密码: *web1pass123* 【或修改后的密码】
如需修改php.ini文件配置,以便上传更大的文件等
**步骤:**
1.创建自定义的 php.ini 文件:
在项目根目录下,创建一个自定义的 php.ini 文件。文件内容可以类似于:upload_max_filesize = 100M
post_max_size = 80M
max_execution_time = 300
max_input_time = 600
memory_limit = 256M
根据需求修改这些参数的值。
2.修改 docker-compose.yml:
在 php 服务中挂载你创建的 php.ini 文件到容器的正确位置。通常,PHP 的 php.ini 配置文件位于容器中的 /usr/local/etc/php 路径下。
修改后的 docker-compose.yml 文件如下:services:
caddy:
image: caddy:2-alpine
container_name: caddy_web1
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- ./public:/srv/public
- ./public1:/srv/public1
- caddy_data:/data
- caddy_config:/config
depends_on:
- php
php:
build: ./php
container_name: php_web1
volumes:
- ./public:/srv/public
- ./public1:/srv/public1
- ./php.ini:/usr/local/etc/php/conf.d/custom.ini # 添加这行来挂载 php.ini
depends_on:
- db1
- db2
db1:
image: mariadb:10.7
container_name: mariadb_web1
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpass123
MYSQL_DATABASE: web1
MYSQL_USER: web1
MYSQL_PASSWORD: web1pass123
volumes:
- ./data1:/var/lib/mysql
db2:
image: mariadb:10.7
container_name: mariadb_web2
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpass123
MYSQL_DATABASE: web2
MYSQL_USER: web2
MYSQL_PASSWORD: web2pass123
volumes:
- ./data2:/var/lib/mysql
volumes:
caddy_data:
caddy_config:
3.重新构建容器:
修改完 docker-compose.yml 文件后,你需要重新构建并启动容器:
⚡ 如果你要再装第二个、第三个或多网站,只需要在 /home/html/docker/web1/ 下新建文件夹public1、public2、public3等,然后在 *docker-compose.yml* 里添加好相应配置,域名配置 *Caddyfile* 文件也要添加好域名
以此类推
六、🚀 迁移步骤(最简洁)
1. 旧 VPS 打包,打包整个项目目录,包括数据库。cd /home/html/docker/
zip -q -r /home/backup$(date +%Y%m%d%H%M).zip web1
或cd /home/html/docker/
tar -czvf typecho1_backup$(date +%Y%m%d%H%M).tar.gz web1
2. 把备份传输到新 VPS或手动下载后再上传到新vps上
3. 新 VPS 解压 & 启动
进入目录并启动:cd /home/html/docker/web1/
docker-compose up -d
✅ 总结
1、这种方式安装,数据库数据 已经在 data/ 挂载目录里,所以无需单独 *mysqldump* 导出导入。
2、整个 web1 项目文件夹就是完整环境,直接打包迁移即可。
3、在新 VPS 上只需要 docker-compose up -d,就能恢复完整博客,方便迁移和备份,适合折腾。
4、可以快捷的一个vps中添加更多的网站
评论 (0)