Loading... 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中添加更多的网站 最后修改:2025 年 12 月 08 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏