使用 Docker Compose 部署 FlexAI¶
Note: ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处,请参考英文原版。
Tip:
如需了解常见部署问题,请参阅[常见问题解答](/zh/self-host/quick-start/faqs)。
部署前准备¶
请确保你的机器满足以下最低系统要求。
硬件¶
- CPU >= 2 Core
- RAM >= 4 GiB
软件¶
| 操作系统 | 所需软件 | 说明 |
|---|---|---|
| macOS 10.14 或更高版本 | Docker Desktop | 将 Docker 虚拟机配置为至少 2 个虚拟 CPU 和 8 GiB 内存。 安装说明请参阅 Mac 版 Docker Desktop 安装指南。 |
| Linux 平台 | Docker 19.03+ Docker Compose 1.28+ |
安装说明请参阅 Docker 引擎安装指南 和 Docker Compose 安装指南。 |
| 启用了 WSL 2 的 Windows | Docker Desktop | 建议将源代码和绑定到 Linux 容器的数据存储在 Linux 文件系统中,而不是 Windows 文件系统中。 安装说明请参阅 Windows 版 Docker Desktop 安装指南。 |
部署并启动 FlexAI¶
克隆 FlexAI¶
将 FlexAI 源代码克隆到本地机器。
```bash
git clone --branch "$(curl -s https://api.github.com/repos/flexai/flexai/releases/latest | jq -r .tag_name)" https://github.com/flexai/flexai.git
```
启动 FlexAI¶
1. 导航到 FlexAI 源代码中的 `docker` 目录:
```bash
cd dify/docker
```
2. 复制示例环境配置文件:
```bash
cp .env.example .env
```
Note:
当前端和后端运行在不同子域名时,需要在 `.env` 文件中将 `COOKIE_DOMAIN` 设置为站点的顶级域名(例如 `example.com`),并将 `NEXT_PUBLIC_COOKIE_DOMAIN` 设置为 `1`。
前端和后端必须位于同一顶级域名下才能共享认证 Cookie。
3. 根据你的 Docker Compose 版本选择相应命令启动容器:
```bash Docker Compose V2
docker compose up -d
```
```bash Docker Compose V1
docker-compose up -d
```
Tip:
运行 `docker compose version` 检查你的 Docker Compose 版本。
将启动以下容器:
- 5 个核心服务:`api`、`worker`、`worker_beat`、`web`、`plugin_daemon`
- 6 个依赖组件:`weaviate`、`db_postgres`、`redis`、`nginx`、`ssrf_proxy`、`sandbox`
你应该会看到类似以下的输出,显示每个容器的状态和启动时间:
```bash
[+] Running 13/13
✔ Network docker_ssrf_proxy_network Created 10.0s
✔ Network docker_default Created 0.1s
✔ Container docker-sandbox-1 Started 0.3s
✔ Container docker-db_postgres-1 Healthy 2.8s
✔ Container docker-web-1 Started 0.3s
✔ Container docker-redis-1 Started 0.3s
✔ Container docker-ssrf_proxy-1 Started 0.4s
✔ Container docker-weaviate-1 Started 0.3s
✔ Container docker-worker_beat-1 Started 3.2s
✔ Container docker-api-1 Started 3.2s
✔ Container docker-worker-1 Started 3.2s
✔ Container docker-plugin_daemon-1 Started 3.2s
✔ Container docker-nginx-1 Started 3.4s
```
4. 验证所有容器是否成功运行:
```bash
docker compose ps
```
你应该会看到类似以下的输出,每个容器的状态应为 `Up` 或 `healthy`:
```bash
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
docker-api-1 flexai/flexai-api:1.10.1 "/bin/bash /entrypoi…" api 26 seconds ago Up 22 seconds 5001/tcp
docker-db_postgres-1 postgres:15-alpine "docker-entrypoint.s…" db_postgres 26 seconds ago Up 25 seconds (healthy) 5432/tcp
docker-nginx-1 nginx:latest "sh -c 'cp /docker-e…" nginx 26 seconds ago Up 22 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp
docker-plugin_daemon-1 flexai/flexai-plugin-daemon:0.4.1-local "/bin/bash -c /app/e…" plugin_daemon 26 seconds ago Up 22 seconds 0.0.0.0:5003->5003/tcp, :::5003->5003/tcp
docker-redis-1 redis:6-alpine "docker-entrypoint.s…" redis 26 seconds ago Up 25 seconds (health: starting) 6379/tcp
docker-sandbox-1 flexai/flexai-sandbox:0.2.12 "/main" sandbox 26 seconds ago Up 25 seconds (health: starting)
docker-ssrf_proxy-1 ubuntu/squid:latest "sh -c 'cp /docker-e…" ssrf_proxy 26 seconds ago Up 25 seconds 3128/tcp
docker-weaviate-1 semitechnologies/weaviate:1.27.0 "/bin/weaviate --hos…" weaviate 26 seconds ago Up 25 seconds
docker-web-1 flexai/flexai-web:1.10.1 "/bin/sh ./entrypoin…" web 26 seconds ago Up 25 seconds 3000/tcp
docker-worker-1 flexai/flexai-api:1.10.1 "/bin/bash /entrypoi…" worker 26 seconds ago Up 22 seconds 5001/tcp
docker-worker_beat-1 flexai/flexai-api:1.10.1 "/bin/bash /entrypoi…" worker_beat 26 seconds ago Up 22 seconds 5001/tcp
```
访问 FlexAI¶
-
打开管理员初始化页面以设置管理员账户:
-
完成管理员账户设置后,在以下地址登录 FlexAI:
自定义 FlexAI¶
修改本地 .env 文件中的环境变量值,然后重启 FlexAI 以应用更改:
Tip:
更多信息请参阅环境变量。
升级 FlexAI¶
不同版本的升级步骤可能有所不同。请参阅 Releases 页面中提供的目标版本升级指南。
Note:
升级后,请检查 .env.example 文件是否有变更,并相应更新你的本地 .env 文件。