首页
/ WriteFreely 生产环境 Docker Compose 部署指南

WriteFreely 生产环境 Docker Compose 部署指南

2025-07-08 05:15:03作者:邵娇湘

WriteFreely 是一个简洁优雅的开源博客平台,专注于写作体验。本文将详细介绍如何使用 Docker Compose 在生产环境中部署 WriteFreely 服务。

核心服务架构

WriteFreely 的生产环境部署主要包含两个核心服务:

  1. 应用服务:运行 WriteFreely 主程序
  2. 数据库服务:使用 MariaDB 作为数据存储

这种分离式架构遵循了现代应用部署的最佳实践,确保了服务的高可用性和可维护性。

配置文件详解

应用服务配置

app:
  image: writefreely
  container_name: writefreely
  volumes:
    - ./data:/data
  ports:
    - 127.0.0.1:8080:8080
  depends_on:
    - db
  restart: unless-stopped

关键配置说明:

  • 数据持久化:通过 ./data:/data 卷挂载,确保应用数据不会因容器重启而丢失
  • 网络隔离:绑定到 127.0.0.1 确保服务仅限本地访问,建议配合 Nginx 反向代理使用
  • 自动恢复restart: unless-stopped 策略保证服务异常退出后自动重启

数据库服务配置

db:
  image: lscr.io/linuxserver/mariadb
  container_name: writefreely-mariadb
  volumes: 
    - ./db:/config
  environment:
    - PUID=65534
    - PGID=65534
    - TZ=Etc/UTC
    - MYSQL_DATABASE=writefreely
    - MYSQL_USER=writefreely
    - MYSQL_PASSWORD=P@ssw0rd
  restart: unless-stopped

关键配置说明:

  • 官方镜像:使用 linuxserver 维护的 MariaDB 镜像,稳定性有保障
  • 时区设置:默认 UTC 时间,可根据实际需求调整
  • 安全建议:示例中的密码 P@ssw0rd 仅为演示,生产环境必须修改为强密码
  • 用户权限:使用 65534 用户运行,这是 Linux 系统中的 nobody 用户,安全性更高

生产环境部署建议

  1. 安全加固

    • 修改默认数据库密码
    • 考虑使用 Docker secret 管理敏感信息
    • 为应用服务添加 HTTPS 支持
  2. 性能优化

    • 根据负载情况调整数据库资源限制
    • 考虑添加 Redis 缓存层
  3. 备份策略

    • 定期备份挂载的 ./data 和 ./db 目录
    • 实现数据库的定期导出备份
  4. 监控方案

    • 添加容器健康检查
    • 集成 Prometheus 监控指标

部署步骤

  1. 创建项目目录并进入:

    mkdir writefreely && cd writefreely
    
  2. 创建 docker-compose.prod.yml 文件,内容参考上文

  3. 启动服务:

    docker-compose -f docker-compose.prod.yml up -d
    
  4. 验证服务:

    docker ps -a
    
  5. 配置反向代理(以 Nginx 为例):

    server {
        listen 80;
        server_name yourdomain.com;
        
        location / {
            proxy_pass http://127.0.0.1:8080;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
    

常见问题排查

  1. 数据库连接失败

    • 检查数据库容器是否正常运行
    • 验证环境变量配置是否正确
    • 查看应用容器日志获取详细错误信息
  2. 权限问题

    • 确保挂载目录对 Docker 用户可写
    • 检查 PUID/PGID 设置是否与主机用户匹配
  3. 性能问题

    • 监控数据库资源使用情况
    • 考虑添加数据库连接池配置

通过以上配置和最佳实践,您可以在生产环境中稳定运行 WriteFreely 服务,为创作者提供流畅的写作体验。