> ## Documentation Index
> Fetch the complete documentation index at: https://dify-6c0370d8-add-new-agent.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 使用 Docker Compose 部署 Dify

<Note> ⚠️ 本文档由 AI 自动翻译。如有任何不准确之处，请参考[英文原版](/en/self-host/quick-start/docker-compose)。</Note>

<Tip>
  如需了解常见部署问题，请参阅[常见问题解答](/zh/self-host/quick-start/faqs)。
</Tip>

## 部署前准备

请确保你的机器满足以下最低系统要求。

### 硬件

* CPU >= 2 Core
* RAM >= 4 GiB

### 软件

| 操作系统                | 所需软件                                          | 说明                                                                                                                                                                           |
| :------------------ | :-------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| macOS 10.14 或更高版本   | Docker Desktop                                | 将 Docker 虚拟机配置为至少 2 个虚拟 CPU 和 8 GiB 内存。<br /><br />安装说明请参阅 [Mac 版 Docker Desktop 安装指南](https://docs.docker.com/desktop/mac/install/)。                                        |
| Linux 平台            | Docker 19.03+<br /><br />Docker Compose 1.28+ | 安装说明请参阅 [Docker 引擎安装指南](https://docs.docker.com/engine/install/) 和 [Docker Compose 安装指南](https://docs.docker.com/compose/install/)。                                          |
| 启用了 WSL 2 的 Windows | Docker Desktop                                | 建议将源代码和绑定到 Linux 容器的数据存储在 Linux 文件系统中，而不是 Windows 文件系统中。<br /><br />安装说明请参阅 [Windows 版 Docker Desktop 安装指南](https://docs.docker.com/desktop/windows/install/#wsl-2-backend)。 |

## 部署并启动 Dify

<Steps>
  <Step title="克隆 Dify">
    将 Dify 源代码克隆到本地机器。

    ```bash theme={null}
    git clone --branch "$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest | jq -r .tag_name)" https://github.com/langgenius/dify.git
    ```
  </Step>

  <Step title="启动 Dify">
    1. 导航到 Dify 源代码中的 `docker` 目录：

       ```bash theme={null}
       cd dify/docker
       ```

    2. 复制示例环境配置文件：

       ```bash theme={null}
       cp .env.example .env  
       ```

           <Note>
             当前端和后端运行在不同子域名时，需要在 `.env` 文件中将 `COOKIE_DOMAIN` 设置为站点的顶级域名（例如 `example.com`），并将 `NEXT_PUBLIC_COOKIE_DOMAIN` 设置为 `1`。

             前端和后端必须位于同一顶级域名下才能共享认证 Cookie。
           </Note>

    3. 根据你的 Docker Compose 版本选择相应命令启动容器：

           <CodeGroup>
             ```bash Docker Compose V2 theme={null}
             docker compose up -d
             ```

             ```bash Docker Compose V1 theme={null}
             docker-compose up -d
             ```
           </CodeGroup>

           <Tip>
             运行 `docker compose version` 检查你的 Docker Compose 版本。
           </Tip>

       将启动以下容器：

       * 5 个核心服务：`api`、`worker`、`worker_beat`、`web`、`plugin_daemon`
       * 6 个依赖组件：`weaviate`、`db_postgres`、`redis`、`nginx`、`ssrf_proxy`、`sandbox`

       你应该会看到类似以下的输出，显示每个容器的状态和启动时间：

       ```bash theme={null}
       [+] 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 theme={null}
       docker compose ps
       ```

       你应该会看到类似以下的输出，每个容器的状态应为 `Up` 或 `healthy`：

       ```bash theme={null}
       NAME                     IMAGE                                       COMMAND                  SERVICE         CREATED          STATUS                             PORTS
       docker-api-1             langgenius/dify-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   langgenius/dify-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         langgenius/dify-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             langgenius/dify-web:1.10.1                  "/bin/sh ./entrypoin…"   web             26 seconds ago   Up 25 seconds                      3000/tcp
       docker-worker-1          langgenius/dify-api:1.10.1                  "/bin/bash /entrypoi…"   worker          26 seconds ago   Up 22 seconds                      5001/tcp
       docker-worker_beat-1     langgenius/dify-api:1.10.1                  "/bin/bash /entrypoi…"   worker_beat     26 seconds ago   Up 22 seconds                      5001/tcp
       ```
  </Step>
</Steps>

## 访问 Dify

1. 打开管理员初始化页面以设置管理员账户：

   ```bash theme={null}
   # 本地环境
   http://localhost/install

   # 服务器环境
   http://your_server_ip/install
   ```

2. 完成管理员账户设置后，在以下地址登录 Dify：

   ```bash theme={null}
   # 本地环境
   http://localhost  

   # 服务器环境
   http://your_server_ip
   ```

## 自定义 Dify

修改本地 `.env` 文件中的环境变量值，然后重启 Dify 以应用更改：

```
docker compose down
docker compose up -d
```

<Tip>
  更多信息请参阅[环境变量](/zh/self-host/configuration/environments)。
</Tip>

## 升级 Dify

不同版本的升级步骤可能有所不同。请参阅 [Releases](https://github.com/langgenius/dify/releases) 页面中提供的目标版本升级指南。

<Note>
  升级后，请检查 `.env.example` 文件是否有变更，并相应更新你的本地 `.env` 文件。
</Note>
