Skip to Content
🚀 Drubase One v1.1 - 基于 Drupal 11 的多租户后端即服务平台
Docs安装使用 Docker Compose 安装

使用 Docker Compose 安装

Drubase One 使用 Docker Compose 管理所有服务,提供一键式安装体验。

🎬 推荐观看: 完整安装配置视频教程  - 包含 Docker 环境搭建和配置的完整演示。

📥 获取项目

方式 1: 使用 Git 克隆 (推荐)

# 克隆仓库 git clone https://github.com/cloudiowoo/drubase-one.git # 进入项目目录 cd drubase-one

方式 2: 下载压缩包

  1. 访问 https://github.com/cloudiowoo/drubase-one/releases 
  2. 下载最新版本的 Source code (zip/tar.gz)
  3. 解压到本地目录

🔧 Docker Compose 配置

服务架构

Drubase One 包含以下 Docker 服务:

服务名称镜像端口说明
nginxnginx:alpine80Web 服务器
php8-4-fpmphp:8.4-fpm9000PHP-FPM 处理器
pg17postgres:17-alpine5432PostgreSQL 数据库
redisredis:7-alpine6379Redis 缓存
node-functionsnode:20-alpine3001Node.js 函数服务

网络配置

所有服务运行在独立的 Docker 网络 baas_network:

172.20.1.0/24 网络 ├── 172.20.1.10 PostgreSQL ├── 172.20.1.20 Redis ├── 172.20.1.30 PHP-FPM ├── 172.20.1.40 Node.js Functions └── 172.20.1.100 Nginx

🚀 启动服务

步骤 1: 进入 Docker 目录

cd docker

步骤 2: 配置环境变量 (可选)

创建 .env 文件自定义配置:

# 复制示例配置 cp .env.example .env # 编辑配置 (可选) vim .env

主要配置项:

# 数据库配置 POSTGRES_DB=drubase POSTGRES_USER=postgres POSTGRES_PASSWORD=your_secure_password # Redis 配置 REDIS_PASSWORD=your_redis_password # PHP 配置 PHP_MEMORY_LIMIT=512M PHP_MAX_EXECUTION_TIME=300

步骤 3: 启动所有服务

Tip

首次启动前,建议先构建镜像以避免潜在的容器问题

docker compose build
# 启动所有服务 (后台运行) docker compose up -d # 查看启动日志 docker compose logs -f # 按 Ctrl+C 退出日志查看

步骤 4: 验证服务状态

# 查看所有容器状态 docker compose ps # 应该看到所有服务都是 "Up" 状态

预期输出:

NAME STATUS PORTS nginx Up 5 minutes 0.0.0.0:80->80/tcp php8-4-fpm Up 5 minutes 9000/tcp pg17 Up 5 minutes 5432/tcp redis Up 5 minutes 6379/tcp node-functions Up 5 minutes 3001/tcp

🔍 验证安装

检查 Web 服务

# 测试 Nginx 连接 curl http://YOUR_HOST # 应该返回 Drupal 安装页面的 HTML

检查数据库连接

# 进入 PostgreSQL 容器 docker exec -it pg17 psql -U postgres -d drubase # 查看数据库 \l # 退出 \q

检查 PHP 配置

# 查看 PHP 版本 docker exec php8-4-fpm php -v # 应输出: PHP 8.4.x

检查函数服务

# 测试 Node.js 服务健康检查 curl http://YOUR_HOST:3001/health # 应返回: {"status":"ok"}

📂 目录结构说明

drubase-one/ ├── docker/ │ ├── docker-compose.yml # 服务编排配置 │ ├── .env.example # 环境变量模板 │ ├── nginx/ │ │ ├── nginx.conf # Nginx 主配置 │ │ └── vhosts/ │ │ └── drubase.conf # 虚拟主机配置 │ ├── fpm/ │ │ ├── php.ini # PHP 配置 │ │ └── www.conf # PHP-FPM 进程配置 │ ├── pg/ # PostgreSQL 数据目录 (自动创建) │ ├── redis/ # Redis 数据目录 (自动创建) │ └── nodejs-services/ │ └── functions/ # Node.js 函数代码 └── web/ # Drupal 应用根目录 ├── index.php ├── modules/custom/ # BaaS 自定义模块 └── profiles/baas_platform/ # 安装配置文件

⚙️ 常用 Docker Compose 命令

服务管理

# 启动服务 docker compose up -d # 停止服务 docker compose stop # 重启服务 docker compose restart # 停止并删除容器 docker compose down # 停止并删除容器、网络、数据卷 docker compose down -v

查看日志

# 查看所有服务日志 docker compose logs # 查看特定服务日志 docker compose logs nginx docker compose logs php8-4-fpm # 实时跟踪日志 docker compose logs -f # 查看最近 100 行日志 docker compose logs --tail=100

进入容器

# 进入 PHP 容器 docker exec -it php8-4-fpm sh # 进入数据库容器 docker exec -it pg17 psql -U postgres -d drubase # 进入 Nginx 容器 docker exec -it nginx sh

🔧 故障排查

问题 1: 端口冲突

错误: bind: address already in use

解决方案:

# 查找占用端口的进程 sudo lsof -i :80 # 选项 1: 停止占用服务 sudo systemctl stop apache2 # 选项 2: 修改 docker-compose.yml 使用其他端口 # ports: # - "8080:80"

问题 2: 容器启动失败

错误: 某个服务状态显示 “Exit 1” 或 “Restarting”

解决方案:

# 查看具体错误日志 docker compose logs <service_name> # 例如 docker compose logs php8-4-fpm # 常见原因: # - 配置文件语法错误 # - 权限问题 # - 依赖服务未就绪

问题 3: 数据库连接失败

错误: could not connect to server

解决方案:

# 1. 确认数据库容器运行中 docker compose ps pg17 # 2. 检查数据库日志 docker compose logs pg17 # 3. 验证数据库凭证 # 检查 .env 文件或 docker-compose.yml 中的配置 # 4. 测试连接 docker exec -it pg17 psql -U postgres -d drubase

问题 4: PHP 内存不足

错误: Allowed memory size exhausted

解决方案:

# 编辑 docker/fpm/php.ini # 修改 memory_limit = 512M # 或更大 # 重启 PHP 容器 docker compose restart php8-4-fpm

问题 5: 文件权限问题

错误: Permission denied 在写入文件时

解决方案:

# 进入 PHP 容器 docker exec -it php8-4-fpm sh # 修复 Drupal 文件权限 cd /var/www/html chown -R www-data:www-data web/sites/default/files chmod -R 755 web/sites/default/files

🔒 安全建议

生产环境配置

如果部署到生产环境,请务必:

  1. 修改默认密码:

    POSTGRES_PASSWORD=使用强密码 REDIS_PASSWORD=使用强密码
  2. 限制端口暴露:

    # 只在内部网络暴露数据库端口 # 移除 ports: - "5432:5432"
  3. 启用 HTTPS:

    • 配置 SSL 证书
    • 使用 Let’s Encrypt 或其他 CA
  4. 定期备份数据:

    # 备份数据库 docker exec pg17 pg_dump -U postgres drubase > backup.sql

➡️ 下一步

Docker 环境启动成功后,继续:

Last updated on