Docker部署Typecho：5分钟搭建高可用博客引言大家好，我是默然，今天给大家分享一篇实战干货。这是我在实际工作中总结出来的经验，希望对大家有所帮助。很多朋友想搭建个人博客，但又被复杂的环境配置、依赖安装、数据库配置这些步骤劝退。今天我就教大家如何用Docker在5分钟内部署一个高可用的Typecho博客系统，全程只需要复制粘贴几个命令，不需要任何复杂的配置，新手也能轻松上手。正文部分1. 问题背景传统的Typecho部署方式需要手动安装Nginx/Apache、PHP、MySQL/MariaDB，还要配置虚拟主机、PHP扩展、数据库权限、文件权限等等，整个过程下来至少需要半小时，而且很容易因为环境差异出现各种奇怪的问题。而使用Docker部署的优势非常明显：环境一致性：所有依赖都打包在镜像中，不会出现"在我机器上能运行"的问题部署快速：几个命令就能完成部署，5分钟搞定易于维护：升级、备份、迁移都非常方便资源隔离：博客系统和其他服务互不影响高可用：可以很方便地配置负载均衡和数据持久化2. 实现思路我们将使用Docker Compose来编排整个服务，包含三个容器：Nginx：Web服务器，负责处理HTTP请求和静态资源PHP-FPM：处理PHP动态请求MariaDB：数据库存储博客内容同时我们会做数据持久化配置，确保容器删除重建后数据不会丢失，并且配置合理的资源限制和健康检查，保证服务的高可用性。整个架构非常轻量，1核2G的服务器就能轻松运行，完全满足个人博客的需求。3. 具体实现步骤3.1 环境准备首先你需要有一台服务器，推荐使用CentOS 7+/Ubuntu 18.04+系统，已经安装好Docker和Docker Compose。如果还没安装Docker，执行以下命令一键安装：# 安装Docker curl -fsSL https://get.docker.com | bash # 启动Docker并设置开机自启 systemctl start docker systemctl enable docker # 安装Docker Compose curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose # 验证安装 docker --version docker-compose --version3.2 创建项目目录mkdir -p /opt/typecho/{nginx,php,mysql,html} cd /opt/typecho3.3 编写Docker Compose配置文件创建docker-compose.yml文件：version: '3.8' services: nginx: image: nginx:alpine container_name: typecho_nginx restart: always ports: - "80:80" - "443:443" volumes: - ./html:/usr/share/nginx/html - ./nginx/conf.d:/etc/nginx/conf.d - ./nginx/logs:/var/log/nginx - ./cert:/etc/nginx/cert depends_on: - php networks: - typecho-network healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost/"] interval: 30s timeout: 10s retries: 3 php: image: php:8.1-fpm-alpine container_name: typecho_php restart: always volumes: - ./html:/usr/share/nginx/html - ./php/php.ini:/usr/local/etc/php/php.ini networks: - typecho-network environment: - TZ=Asia/Shanghai healthcheck: test: ["CMD", "php-fpm", "-t"] interval: 30s timeout: 10s retries: 3 mysql: image: mariadb:10.6 container_name: typecho_mysql restart: always volumes: - ./mysql:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=your_strong_password_here - MYSQL_DATABASE=typecho - MYSQL_USER=typecho - MYSQL_PASSWORD=typecho_password_here - TZ=Asia/Shanghai networks: - typecho-network command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-pyour_strong_password_here"] interval: 30s timeout: 10s retries: 3 networks: typecho-network: driver: bridge注意：请将上面的your_strong_password_here和typecho_password_here替换为你自己的强密码。3.4 配置Nginx创建nginx/conf.d/typecho.conf文件：server { listen 80; server_name your_domain.com; # 替换为你的域名 root /usr/share/nginx/html; index index.php index.html; access_log /var/log/nginx/typecho_access.log; error_log /var/log/nginx/typecho_error.log; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { fastcgi_pass php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # 静态资源缓存 location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ { expires 30d; add_header Cache-Control "public, immutable"; } # 安全配置 add_header X-Frame-Options "SAMEORIGIN" always; add_header X-XSS-Protection "1; mode=block" always; add_header X-Content-Type-Options "nosniff" always; }3.5 配置PHP创建php/php.ini文件：memory_limit = 256M upload_max_filesize = 64M post_max_size = 64M max_execution_time = 300 date.timezone = Asia/Shanghai3.6 下载Typechocd /opt/typecho/html wget https://github.com/typecho/typecho/releases/latest/download/typecho.zip unzip typecho.zip rm -f typecho.zip chown -R www-data:www-data /opt/typecho/html3.7 启动服务cd /opt/typecho docker-compose up -d等待几秒钟，所有容器启动成功后，访问你的域名或者服务器IP，就可以进入Typecho的安装向导了。3.8 完成安装在安装页面填写数据库信息：数据库地址：mysql数据库名：typecho数据库用户名：typecho数据库密码：你之前在docker-compose.yml中设置的typecho_password_here数据库前缀：默认typecho_即可然后填写管理员账号信息，点击安装就完成了整个部署过程。整个过程是不是不到5分钟？非常简单。4. 常见问题与解决方案4.1 安装完成后后台404问题这是因为Nginx伪静态配置的问题，确保你的Nginx配置中有这一段：location / { try_files $uri $uri/ /index.php$is_args$args; }配置完成后重启Nginx容器：docker-compose restart nginx4.2 上传文件大小限制我们已经在php.ini中配置了最大上传64M，如果还需要更大，可以修改php/php.ini中的upload_max_filesize和post_max_size参数，然后重启PHP容器：docker-compose restart php4.3 如何配置HTTPS推荐使用Let's Encrypt免费证书：# 安装certbot yum install certbot python3-certbot-nginx -y # CentOS # apt install certbot python3-certbot-nginx -y # Ubuntu # 申请证书 certbot --nginx -d your_domain.com证书会自动续期，非常方便。4.4 数据备份定期备份整个目录即可：tar -zcvf typecho_backup_$(date +%Y%m%d).tar.gz /opt/typecho恢复的时候直接解压到对应目录，重新启动容器即可。4.5 升级Typechocd /opt/typecho/html wget https://github.com/typecho/typecho/releases/latest/download/typecho.zip unzip -o typecho.zip rm -f typecho.zip chown -R www-data:www-data /opt/typecho/html然后访问博客后台，按照提示完成升级即可。5. 性能测试与优化5.1 基础性能测试我们用ab工具做压力测试：ab -n 1000 -c 100 http://your_domain.com/在1核2G的服务器上，QPS可以达到500+，完全满足个人博客的需求。5.2 优化建议开启缓存：安装Typecho缓存插件，比如CacheKit，可以大幅提高访问速度CDN加速：将静态资源放到CDN上，减轻服务器压力数据库优化：定期清理数据库垃圾，优化表结构开启Gzip压缩：在Nginx中配置Gzip，减少传输体积图片优化：上传图片前先压缩，或者使用图床服务总结通过Docker部署Typecho非常简单快捷，而且稳定性和可维护性都比传统部署方式好很多。整个部署过程5分钟就能完成，非常适合新手和不想在环境配置上浪费时间的朋友。部署完成后，你就可以专注于内容创作，不需要担心服务器维护的问题。如果在部署过程中遇到任何问题，欢迎在评论区留言，我会一一解答。如果你觉得我的文章对你有用，请随意赞赏，也欢迎分享给更多需要的朋友。最后修改：2026 年 03 月 13 日© 允许规范转载