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 上全量实测通过。

DreamFactoryDockerDocker Compose数据库Redis2026/10/24

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 自建。

三、前置条件

  1. Docker 与 Compose 插件:宿主机安装 Docker 24+ 与 docker compose v2 插件(docker compose version 可确认);
  2. 网络可达:能访问 Docker Hub(国内环境需自行配置镜像加速或代理);
  3. 端口规划:默认应用监听宿主机 8132(可改),确认未被占用:ss -ltn | grep 8132 无输出即空闲;
  4. 资源:建议至少 2 核 4GB(应用启动即运行数据库迁移,内存不足会中断);磁盘预留 6GB 以上;
  5. 密码规划:管理员密码至少 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_DRIVERmysql系统库类型(写入 .env 的 DB_CONNECTION;可选 pgsql/sqlite)✅
DB_HOSTmysql系统库主机名(Compose 服务名)✅
DB_PORT3306系统库端口建议
DB_USERNAME / DB_PASSWORDdf_admin / q1w2e3r4系统库账号✅
DB_DATABASEdreamfactory系统库名✅
CACHE_DRIVERredis缓存驱动名建议
CACHE_HOST / CACHE_PORTredis / 6379缓存地址建议
CACHE_DATABASE0Redis 逻辑库编号可选
APP_KEYbase64:...加密密钥;不传则首启自动生成重建必传
ADMIN_EMAILadmin@example.com首个管理员邮箱自动建管理员必传
ADMIN_PASSWORDq1w2e3r4q1w2e3r4管理员密码,≥16 字符,不足直接拒绝启动同上
ADMIN_PHONE15500000000管理员手机号;7.7.1 中缺省此变量会跳过自动建管理员(见第十一章 Q1)同上
ADMIN_FIRST_NAME / ADMIN_LAST_NAMEAdmin / DreamFactory管理员姓名可选
SERVERNAMElocalhostNGINX server_name可选
APP_LOG_LEVELwarning日志级别(debug/info/warning/error)可选
APP_DEBUGfalse调试模式,生产务必 false可选
LOG_TO_STDOUTtrue应用日志同时输出到容器标准输出可选
ENABLE_MCP_DAEMONtrue启动 MCP Server 守护进程(LLM 集成)可选
ENABLE_SYSTEM_MCP_DAEMONtrue启动系统 API MCP 守护进程可选
JWT_TTL / JWT_REFRESH_TTL分钟数JWT 会话有效期(写入 .env 的 DF_JWT_TTL 等)可选
ALLOW_FOREVER_SESSIONStrue/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:
    # docker-compose.yml 的 web 服务中追加
      volumes:
        - ./env/dreamfactory.env:/opt/dreamfactory/.env
    
    使用 bind mount 后,环境变量注入由 Compose 改为直接维护该文件(首次可 docker 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)