DreamFactory Docker Compose 部署指南
用官方镜像 `dreamfactorysoftware/df-docker:7.7.1` 通过 Docker Compose 从零部署一套 DreamFactory REST API 平台(MySQL 8.0 系统库 + Redis 缓存 + 示例 PostgreSQL 数据集),完成首次初始化、管理员登录与 API 调用验证。已在 Ubuntu 22.04(x86_64)服务器、DreamFactory 7.7.1 上全量实测通过。
DreamFactory Docker Compose 部署指南
目标:用官方镜像
dreamfactorysoftware/df-docker:7.7.1通过 Docker Compose 从零部署一套 DreamFactory REST API 平台(MySQL 8.0 系统库 + Redis 缓存 + 示例 PostgreSQL 数据集),完成首次初始化、管理员登录与 API 调用验证。已在 Ubuntu 22.04(x86_64)服务器、DreamFactory 7.7.1 上全量实测通过。
一、环境信息
本文所有命令与输出均在以下环境实测采集:
- 操作系统:Ubuntu 22.04 LTS(x86_64),内核 5.15+
- Docker:29.8.1(含 Docker Compose v2 插件)
- DreamFactory:7.7.1(官方镜像
dreamfactorysoftware/df-docker:7.7.1,Docker Hub 更新于 2026-09-25,amd64 单架构约 840MB,本地解压后约 3.18GB 磁盘占用) - 系统数据库:MySQL 8.0(官方镜像
mysql:8.0) - 缓存:Redis 7(官方镜像
redis:7) - 示例数据集:
aa8y/postgres-dataset(内置 dellstore 样例库,用于演示 API 生成) - 应用内 PHP 版本:8.5.11(df-docker 7.6.0 起基础环境为 PHP 8.5)
- 访问端口:宿主机 8132 → 应用 80
- 部署目录:
/opt/dreamfactory-stack/(本文示例路径,读者可自定)
💡 技术拓展:系统数据库不止 MySQL 一种选择。DreamFactory 的用户/角色/服务配置等元数据可存放在——
选择 特点 适用场景 MySQL 8.0 官方 Compose 默认搭配,生态成熟 通用生产环境(本文采用) PostgreSQL 功能对等,适合已有 PG 运维体系 已有 PostgreSQL 栈的团队 SQLite 零依赖单文件,镜像默认内置 试用/演示,不建议生产 本文实际采用 MySQL 8.0:与官方 Compose 编排一致,备份、主从、监控工具链最成熟。
二、镜像选型说明
官方在 Docker Hub 的仓库为 dreamfactorysoftware/df-docker,截至 2026-10-24 共有 1966 个 tag。选型要点:
| 镜像 tag | 说明 | 建议 |
|---|---|---|
7.7.1 | 当前最新稳定版,与 GitHub Release 7.7.1(2026-09-24)对应 | ✅ 生产推荐,锁定版本 |
7.7.1-arm64 / 7.7.1-amd64 | 单架构 tag(arm64 约 776MB / amd64 约 840MB) | 明确架构时用 |
7.7.0、7.4.2 等 | 历史版本,可回滚 | 降级用 |
latest | 跟随最新发布(当前即 7.7.1) | 测试可用,生产不建议(升级不可控) |
两种部署来源对比(本文选方案 B):
- 方案 A:官方仓库构建——克隆
github.com/dreamfactorysoftware/df-docker后docker compose build。Dockerfile 默认克隆 master 分支源码并执行 composer 安装,耗时长且版本不可控(除非加--build-arg BRANCH=7.7.1); - 方案 B:拉取官方预构建镜像——
dreamfactorysoftware/df-docker:7.7.1直接可用,版本与 GitHub Release 一一对应,docker compose up -d即起。
关键差异:方案 B 部署快、版本确定;只有需要魔改 NGINX 配置或打补丁时才值得用方案 A 自建。
三、前置条件
- Docker 与 Compose 插件:宿主机安装 Docker 24+ 与
docker composev2 插件(docker compose version可确认); - 网络可达:能访问 Docker Hub(国内环境需自行配置镜像加速或代理);
- 端口规划:默认应用监听宿主机 8132(可改),确认未被占用:
ss -ltn | grep 8132无输出即空闲; - 资源:建议至少 2 核 4GB(应用启动即运行数据库迁移,内存不足会中断);磁盘预留 6GB 以上;
- 密码规划:管理员密码至少 16 个字符——这是 DreamFactory 首次初始化(df:setup)的硬校验,8 位的常见演示口令会被拒绝。
四、部署步骤
4.1 建立部署目录与编排文件
创建目录并写入 docker-compose.yml(完整内容如下,逐项说明见第六、七章):
mkdir -p /opt/dreamfactory-stack && cd /opt/dreamfactory-stack
/opt/dreamfactory-stack/docker-compose.yml:
name: dreamfactory-7.7.1-stack
services:
mysql:
image: mysql:8.0
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: q1w2e3r4
MYSQL_DATABASE: dreamfactory
MYSQL_USER: df_admin
MYSQL_PASSWORD: q1w2e3r4
volumes:
- df-mysql:/var/lib/mysql
redis:
image: redis:7
restart: unless-stopped
example_data:
image: aa8y/postgres-dataset
restart: unless-stopped
environment:
DATASETS: dellstore
POSTGRES_PASSWORD: root_pw
web:
image: dreamfactorysoftware/df-docker:7.7.1
restart: unless-stopped
depends_on:
- mysql
- redis
environment:
SERVERNAME: localhost
# APP_KEY 首次启动后必须固化到此处(获取方式见 4.3),否则重建后加密数据失效
APP_KEY: base64:nDBIyjpUi9XOInwnKLceB1nza8o0G+6EMjyaYmkZ2sY=
DB_DRIVER: mysql
DB_HOST: mysql
DB_PORT: 3306
DB_USERNAME: df_admin
DB_PASSWORD: q1w2e3r4
DB_DATABASE: dreamfactory
CACHE_DRIVER: redis
CACHE_HOST: redis
CACHE_DATABASE: 0
CACHE_PORT: 6379
ADMIN_EMAIL: admin@example.com
ADMIN_PASSWORD: q1w2e3r4q1w2e3r4
ADMIN_PHONE: "15500000000"
ADMIN_FIRST_NAME: Admin
ADMIN_LAST_NAME: DreamFactory
APP_LOG_LEVEL: warning
APP_DEBUG: "false"
volumes:
- df-storage:/opt/dreamfactory/storage
ports:
- "8132:80"
volumes:
df-storage:
driver: local
df-mysql:
driver: local
⚠️ 注意:
name: dreamfactory-7.7.1-stack中的版本号含点号,Compose 会规范化为dreamfactory-771-stack(实测项目名、卷名前缀均为该形式,见 4.2),属正常行为,不影响使用。
4.2 拉起整套服务
cd /opt/dreamfactory-stack && docker compose up -d
实测输出:
[+] Running 7/7
✔ Network dreamfactory-771-stack_df-net Created
✔ Volume "dreamfactory-771-stack_df-storage" Created
✔ Volume "dreamfactory-771-stack_df-mysql" Created
✔ Container dreamfactory-771-stack-mysql-1 Started
✔ Container dreamfactory-771-stack-example_data-1 Started
✔ Container dreamfactory-771-stack-redis-1 Started
✔ Container dreamfactory-771-stack-web-1 Started
确认四个服务均已运行:
docker compose ps
实测输出(节选):
NAME STATUS PORTS
dreamfactory-771-stack-example_data-1 Up 10 minutes 5432/tcp
dreamfactory-771-stack-mysql-1 Up 10 minutes 3306/tcp, 33060/tcp
dreamfactory-771-stack-redis-1 Up 10 minutes 6379/tcp
dreamfactory-771-stack-web-1 Up 2 minutes 0.0.0.0:8132->80/tcp, [::]:8132->80/tcp
4.3 首次初始化(自动完成)
web 服务启动时,入口脚本自动完成:写入系统库连接 → 生成 APP_KEY → 迁移数据库 → 创建首个管理员。观察初始化日志:
docker compose logs web
实测输出(关键过程节选):
Setting CACHE_DRIVER, CACHE_HOST, CACHE_DATABASE
Setting CACHE_PORT
Setting DB_DRIVER, DB_HOST, DB_USERNAME, DB_PASSWORD, and DB_DATABASE
Setting DB_PORT
Generating APP_KEY
INFO Application key set successfully.
Setting up database and creating first admin user
Running Migrations...
INFO Preparing database.
Creating migration table ...................................... 18.48ms DONE
INFO Running migrations.
2015_01_27_190908_create_system_tables Migration driver used: mysql
....................... 995.01ms DONE
2015_01_27_190909_create_db_extras_tables Migration driver used: mysql
.................... 128.69ms DONE
...
App resources created: admin, api_docs, file_manager
Creating the first admin user...
Successfully created first admin user.
...
*********************************************** Setup Successful! ****************************************************
* Setup is complete! Your instance is ready. Please launch your instance using a browser.
**********************************************************************************************************************
迁移共上百条(覆盖系统表、各类连接器配置表),全程约 1~2 分钟。App resources created: admin, api_docs, file_manager 是平台自带的三个内置应用,各自的 API Key 存于系统库 app 表(排障时会用到,见 4.5)。
初始化完成后立即固化 APP_KEY(存有加密凭据的密钥,重建后必须一致):
docker compose exec web cat /opt/dreamfactory/.env | grep '^APP_KEY='
实测输出:
APP_KEY=base64:nDBIyjpUi9XOInwnKLceB1nza8o0G+6EMjyaYmkZ2sY=
把该值原样填入 docker-compose.yml 的 APP_KEY 环境变量(取消注释并替换),之后执行 docker compose up -d web 让其生效。实测重启日志会显示:
Setting APP_KEY=base64:nDBIyjpUi9XOInwnKLceB1nza8o0G+6EMjyaYmkZ2sY= from environment
4.4 访问管理门户
curl -s -o /dev/null -w '%{http_code} %{redirect_url}\n' http://127.0.0.1:8132/
实测输出:
302 http://127.0.0.1:8132/dreamfactory/dist/index.html
浏览器访问 http://<服务器IP>:8132/,会自动跳转到管理门户登录页。因为部署时已通过 ADMIN_EMAIL/ADMIN_PASSWORD 自动创建了管理员,此处直接用 admin@example.com / q1w2e3r4q1w2e3r4 登录即可;若未配置这两个变量,首次访问会出现「Create a System Administrator」注册页,手动填写创建。
4.5 用 REST API 验证部署
管理员登录走系统管理员专用端点 POST /api/v2/system/admin/session(注意不是 user/session,两者区别见第十一章 Q2)。请求头必须携带内置 admin 应用的 API Key,可在系统库中查询:
docker compose exec mysql mysql -udf_admin -pq1w2e3r4 dreamfactory \
-e "SELECT name,api_key FROM app WHERE name='admin';"
实测输出:
name api_key
admin 6498a8ad1beb9d84d63035c5d1120c007fad6de706734db9689f8996707e0f7d
登录获取 JWT 会话令牌:
curl -s -X POST http://127.0.0.1:8132/api/v2/system/admin/session \
-H 'Content-Type: application/json' \
-H 'X-DreamFactory-API-Key: 6498a8ad1beb9d84d63035c5d1120c007fad6de706734db9689f8996707e0f7d' \
-d '{"email":"admin@example.com","password":"q1w2e3r4q1w2e3r4"}'
实测输出(节选):
{"session_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIi...","session_id":null,"id":1,"name":"Admin DreamFactory","first_name":"Admin","last_name":"DreamFactory","email":"admin@example.com","is_sys_admin":true,...}
带 JWT 查询平台版本,确认部署的正是 7.7.1:
curl -s http://127.0.0.1:8132/api/v2/system/environment \
-H 'X-DreamFactory-API-Key: 6498a8ad1beb9d84d63035c5d1120c007fad6de706734db9689f8996707e0f7d' \
-H 'X-DreamFactory-Session-Token: <上一步的session_token>' | python3 -m json.tool | grep -A6 '"platform"'
实测输出(节选):
"platform": {
"version": "7.7.1",
"bitnami_demo": false,
"is_hosted": false,
"is_trial": false,
"license": "OPEN SOURCE",
"install_type": "Docker",
"db_driver": "mysql",
...
}
至此部署完成:Web 门户可登录、REST API 可用、版本为 7.7.1 开源版。
五、数据持久化说明
本编排使用两个命名卷,重建服务不丢数据:
| 卷名(实际生成) | 挂载点 | 存放内容 |
|---|---|---|
dreamfactory-771-stack_df-mysql | /var/lib/mysql | 系统数据库(用户、角色、服务配置) |
dreamfactory-771-stack_df-storage | /opt/dreamfactory/storage | 应用存储(日志、文件服务根目录、脚本、会话/缓存回退文件) |
docker volume ls --format '{{.Name}}' | grep dreamfactory
实测输出:
dreamfactory-771-stack_df-mysql
dreamfactory-771-stack_df-storage
⚠️ 关键区别:
/opt/dreamfactory/.env(含 APP_KEY)不在任何卷内,位于应用容器文件系统。删除容器重建时 APP_KEY 会重新生成(见 4.3 的固化步骤),这就是官方文档反复强调「重建前备份 APP_KEY」的原因——APP_KEY 一变,系统库里用旧密钥加密的服务凭据(数据库密码等)全部无法解密。
备份系统库(示例,导出到宿主机当前目录):
docker compose exec mysql sh -c 'mysqldump -udf_admin -pq1w2e3r4 dreamfactory' > df-backup.sql
恢复:
docker compose exec -T mysql sh -c 'mysql -udf_admin -pq1w2e3r4 dreamfactory' < df-backup.sql
六、环境变量表
web 服务支持的核心环境变量(经 7.7.1 镜像入口脚本实测验证):
| 变量 | 实测取值 | 作用 | 必填 |
|---|---|---|---|
DB_DRIVER | mysql | 系统库类型(写入 .env 的 DB_CONNECTION;可选 pgsql/sqlite) | ✅ |
DB_HOST | mysql | 系统库主机名(Compose 服务名) | ✅ |
DB_PORT | 3306 | 系统库端口 | 建议 |
DB_USERNAME / DB_PASSWORD | df_admin / q1w2e3r4 | 系统库账号 | ✅ |
DB_DATABASE | dreamfactory | 系统库名 | ✅ |
CACHE_DRIVER | redis | 缓存驱动名 | 建议 |
CACHE_HOST / CACHE_PORT | redis / 6379 | 缓存地址 | 建议 |
CACHE_DATABASE | 0 | Redis 逻辑库编号 | 可选 |
APP_KEY | base64:... | 加密密钥;不传则首启自动生成 | 重建必传 |
ADMIN_EMAIL | admin@example.com | 首个管理员邮箱 | 自动建管理员必传 |
ADMIN_PASSWORD | q1w2e3r4q1w2e3r4 | 管理员密码,≥16 字符,不足直接拒绝启动 | 同上 |
ADMIN_PHONE | 15500000000 | 管理员手机号;7.7.1 中缺省此变量会跳过自动建管理员(见第十一章 Q1) | 同上 |
ADMIN_FIRST_NAME / ADMIN_LAST_NAME | Admin / DreamFactory | 管理员姓名 | 可选 |
SERVERNAME | localhost | NGINX server_name | 可选 |
APP_LOG_LEVEL | warning | 日志级别(debug/info/warning/error) | 可选 |
APP_DEBUG | false | 调试模式,生产务必 false | 可选 |
LOG_TO_STDOUT | true | 应用日志同时输出到容器标准输出 | 可选 |
ENABLE_MCP_DAEMON | true | 启动 MCP Server 守护进程(LLM 集成) | 可选 |
ENABLE_SYSTEM_MCP_DAEMON | true | 启动系统 API MCP 守护进程 | 可选 |
JWT_TTL / JWT_REFRESH_TTL | 分钟数 | JWT 会话有效期(写入 .env 的 DF_JWT_TTL 等) | 可选 |
ALLOW_FOREVER_SESSIONS | true/false | 是否允许永久会话 | 可选 |
EXTERNAL_IP | 服务器公网 IP | 平台展示用外部地址 | 可选 |
SSMTP_* 系列 | — | 外发邮件中继配置(SSMTP_mailhub 等) | 可选 |
mysql 服务自身用 MYSQL_ROOT_PASSWORD、MYSQL_DATABASE、MYSQL_USER、MYSQL_PASSWORD 四个标准 MySQL 镜像变量初始化;example_data 用 DATASETS: dellstore 指定数据集、POSTGRES_PASSWORD: root_pw 设置超级用户密码(官方文档同款演示库)。
七、配置参数说明
容器内 DreamFactory 的生效配置位于 /opt/dreamfactory/.env,环境变量在入口阶段被写入该文件。查看当前生效值:
docker compose exec web grep -E '^(DB_|CACHE_)' /opt/dreamfactory/.env
实测输出:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=dreamfactory
DB_USERNAME=df_admin
DB_PASSWORD=q1w2e3r4
CACHE_HOST=redis
CACHE_PORT=6379
CACHE_DATABASE=0
逐项说明:
DB_CONNECTION=mysql:由DB_DRIVER转写而来,Laravel 据此加载连接配置;DB_HOST/DB_PORT/DB_DATABASE/DB_USERNAME/DB_PASSWORD:系统库五要素,与 Compose 中的 MySQL 初始化变量一一对应;CACHE_HOST/CACHE_PORT/CACHE_DATABASE:Redis 缓存三要素。
⚠️ 已知问题(7.7.1 实测):环境变量
CACHE_DRIVER=redis写入的是CACHE_HOST等地址项,但 Laravel 7.x 实际读取的CACHE_STORE未被同步改写,仍保持默认file(文件缓存),即 Compose 传入的 Redis 缓存设置被静默忽略。生产环境如需 Redis 缓存,部署后在容器内手工修正:docker compose exec web sed -i 's/^CACHE_STORE=file/CACHE_STORE=redis/' /opt/dreamfactory/.env docker compose restart web修改后用
docker compose exec web grep '^CACHE_STORE' /opt/dreamfactory/.env应显示CACHE_STORE=redis。此问题在项目 master 分支入口脚本中已加set_env_var CACHE_STORE修复,升级更高版本可关注。
💡 技术拓展:缓存驱动常见选项对比——
驱动 原理 适用场景 file 缓存写入本地磁盘文件 单实例、无外部依赖(镜像默认) redis 独立 Redis 服务集中缓存 多实例共享、低延迟(本文目标) memcached 独立 Memcached 服务 已有 Memcached 栈 database 缓存写入系统库表 不想引入额外组件的小型部署 本文实际采用 redis(通过 CACHE_STORE 修正生效):为后续水平扩展多实例共享缓存做准备;单实例场景保持默认 file 也完全可用。
八、配置文件挂载
镜像内相关配置文件位置及外置方法:
- 应用配置:
/opt/dreamfactory/.env(环境变量总入口)与/opt/dreamfactory/config/*.php(Laravel 配置)。.env属容器文件系统,如需持久化可改用 bind mount:使用 bind mount 后,环境变量注入由 Compose 改为直接维护该文件(首次可# docker-compose.yml 的 web 服务中追加 volumes: - ./env/dreamfactory.env:/opt/dreamfactory/.envdocker compose cp web:/opt/dreamfactory/.env ./env/dreamfactory.env导出作底稿); - NGINX 站点配置:
/etc/nginx/sites-available/dreamfactory.conf,SERVERNAME与HTTPS_HEADER两个变量在入口阶段替换进该文件;自定义反向代理头、超时等需重建镜像或 bind mount 覆盖; - 应用存储:
/opt/dreamfactory/storage已用命名卷持久化(见第五章); - PHP-FPM 池配置:
/etc/php/8.5/fpm/pool.d/www.conf,入口脚本已把进程上限调至 5000/按需模式,一般无需改动。
九、等价 docker run(单容器形态)
Compose 的多服务编排可以等价拆解为单容器命令。最小单容器形态(系统库与缓存用外部现成实例):
docker run -d --name dreamfactory-7.7.1 \
-p 8132:80 \
-e SERVERNAME=localhost \
-e DB_DRIVER=mysql \
-e DB_HOST=192.168.1.100 \
-e DB_PORT=3306 \
-e DB_USERNAME=df_admin \
-e DB_PASSWORD=q1w2e3r4 \
-e DB_DATABASE=dreamfactory \
-e CACHE_DRIVER=redis \
-e CACHE_HOST=192.168.1.100 \
-e CACHE_PORT=6379 \
-e ADMIN_EMAIL=admin@example.com \
-e ADMIN_PASSWORD=q1w2e3r4q1w2e3r4 \
-e ADMIN_PHONE=15500000000 \
-v dreamfactory-df-storage:/opt/dreamfactory/storage \
dreamfactorysoftware/df-docker:7.7.1
参数与 Compose 文件逐项对应:端口映射、系统库五要素、缓存地址、管理员三要素、存储卷。区别是 DB_HOST/CACHE_HOST 指向宿网真实地址而非 Compose 服务名。适用场景:系统库/缓存已由 DBA 独立运维、只需部署应用本体的企业环境。验证方式与 4.4/4.5 完全一致。
十、常用运维命令
以下命令均在部署目录内执行(cd /opt/dreamfactory-stack):
# 查看各服务状态
docker compose ps
# 查看/跟踪应用日志
docker compose logs web
docker compose logs -f web
# 重启单个服务
docker compose restart web
# 进入应用容器排查
docker compose exec web bash
# 执行 Artisan 命令(数据库迁移状态检查为例)
docker compose exec web php artisan migrate:status
# 升级版本:改 docker-compose.yml 中镜像 tag(如 7.7.1 → 新版本号)后
docker compose pull web
docker compose up -d web
# 升级后检查迁移是否需要补跑
docker compose exec web php artisan migrate:status
docker compose exec web php artisan migrate --force
# 停止/启动整套服务(保留数据卷)
docker compose stop
docker compose start
# 彻底销毁(含网络;加 -v 连数据卷一起删,慎用)
docker compose down
docker compose down -v
php artisan migrate:status 实测输出(节选,Ran 表示已执行):
Status Migration name
------------------------------------------------------
Ran 2015_01_27_190908_create_system_tables
Ran 2015_01_27_190909_create_db_extras_tables
Ran 2015_01_27_190909_create_email_tables
...
💡 升级铁律:升级前备份系统库(第五章命令)+ 记录 APP_KEY;升级后必须检查
migrate:status,有 Pending 的迁移要补php artisan migrate --force,再php artisan config:clear && php artisan cache:clear清缓存。
十一、常见问题
Q1:设置了 ADMIN_EMAIL/ADMIN_PASSWORD,但首次启动没有自动创建管理员,首页停在「Create a System Administrator」注册页?
实测定位过程:对比镜像内入口脚本 /docker-entrypoint.sh 第 145 行,条件是三个变量同时非空才执行 php artisan df:setup 自动建管理员:
if [ -n "$ADMIN_EMAIL" ] && [ -n "$ADMIN_PASSWORD" ] && [ -n "$ADMIN_PHONE" ]; then
只配了邮箱和密码(缺 ADMIN_PHONE)时,整个自动初始化被静默跳过——启动日志里不会出现 Setting up database and creating first admin user。解决方案:在 docker-compose.yml 补 ADMIN_PHONE: "15500000000" 后 docker compose up -d web 重建,日志出现 Successfully created first admin user. 即成功。
Q2:用管理员邮箱登录 POST /api/v2/user/session 返回 401 "Invalid credentials supplied.",密码明明正确?
实测定位过程:密码哈希校验正常(容器内 Hash::check 返回 true),但打开 MySQL general log 抓到登录 SQL:
Prepare select * from `user` where `email` = ? and `is_sys_admin` = ? and `is_active` = ? limit 1
Execute select * from `user` where `email` = 'admin@example.com' and `is_sys_admin` = 0 and `is_active` = 1 limit 1
user/session 是终端用户登录端点,查询强制 is_sys_admin = 0——管理员账号被明确排除,永远 401。管理员必须走系统管理员端点 POST /api/v2/system/admin/session(见 4.5,实测返回 JWT 成功)。两个端点的职责划分在 /api/v2/system/environment 返回的 authentication 字段里有官方说明:admin.path = "system/admin/session",user.path = "user/session"。此外,REST 调用必须携带 X-DreamFactory-API-Key 请求头(内置 admin 应用可在系统库 app 表查到),缺失时同样登录失败。
Q3:首次访问页面出现红色报错或转圈很久?
首启时数据库迁移需 1~2 分钟,页面可能先于迁移完成加载。观察 docker compose logs -f web 直到出现 Setup Successful! 后刷新页面即可,无需重启。
Q4:重建容器后所有服务连不上、报解密错误?
APP_KEY 变了。按 4.3 的方法找回原 APP_KEY 写回 docker-compose.yml 再重建;若原 APP_KEY 已彻底丢失,只能清空系统库重新初始化(docker compose down -v 后重来),并逐个重录服务凭据。
Q5:CACHE_DRIVER=redis 传了却没生效?
见第七章「已知问题」:7.7.1 入口脚本未同步改写 CACHE_STORE,默认仍是 file。手工 sed 修正后重启即可;实际影响有限——单实例下文件缓存工作正常,多实例部署才必须修。
十二、参考链接
- 官方 Docker 安装文档:
https://docs.dreamfactory.com/getting-started/installing-dreamfactory/docker-installation - 官方 Compose 仓库:
https://github.com/dreamfactorysoftware/df-docker - 官方镜像(Docker Hub):
https://hub.docker.com/r/dreamfactorysoftware/df-docker - DreamFactory 源码仓库:
https://github.com/dreamfactorysoftware/dreamfactory - 管理端点说明(system/environment 的 authentication 字段)与本文实测记录(2026-10-24)