★★★docker 安装最小化带数据库多网站 示例

★★★docker 安装最小化带数据库多网站 示例

wszx01
2025-08-26 / 0 评论 / 0 阅读

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 zip

2、安装好 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/public4

2、添加 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

评论 (0)

取消
您是第 88685 位访客