使用 Docker Compose 安装
Drubase One 使用 Docker Compose 管理所有服务,提供一键式安装体验。
🎬 推荐观看: 完整安装配置视频教程 - 包含 Docker 环境搭建和配置的完整演示。
📥 获取项目
方式 1: 使用 Git 克隆 (推荐)
# 克隆仓库
git clone https://github.com/cloudiowoo/drubase-one.git
# 进入项目目录
cd drubase-one方式 2: 下载压缩包
- 访问 https://github.com/cloudiowoo/drubase-one/releases
- 下载最新版本的 Source code (zip/tar.gz)
- 解压到本地目录
🔧 Docker Compose 配置
服务架构
Drubase One 包含以下 Docker 服务:
| 服务名称 | 镜像 | 端口 | 说明 |
|---|---|---|---|
| nginx | nginx:alpine | 80 | Web 服务器 |
| php8-4-fpm | php:8.4-fpm | 9000 | PHP-FPM 处理器 |
| pg17 | postgres:17-alpine | 5432 | PostgreSQL 数据库 |
| redis | redis:7-alpine | 6379 | Redis 缓存 |
| node-functions | node:20-alpine | 3001 | Node.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🔒 安全建议
生产环境配置
如果部署到生产环境,请务必:
-
修改默认密码:
POSTGRES_PASSWORD=使用强密码 REDIS_PASSWORD=使用强密码 -
限制端口暴露:
# 只在内部网络暴露数据库端口 # 移除 ports: - "5432:5432" -
启用 HTTPS:
- 配置 SSL 证书
- 使用 Let’s Encrypt 或其他 CA
-
定期备份数据:
# 备份数据库 docker exec pg17 pg_dump -U postgres drubase > backup.sql
➡️ 下一步
Docker 环境启动成功后,继续:
- 安装过程 - 完成 Drupal 安装向导
Last updated on