mirror of
https://github.com/langgenius/dify-docs.git
synced 2026-03-27 13:28:32 +07:00
164 lines
8.2 KiB
Plaintext
164 lines
8.2 KiB
Plaintext
---
|
|
title: Deploy Dify with Docker Compose
|
|
sidebarTitle: Docker Compose
|
|
---
|
|
|
|
<Tip>
|
|
For common deployment questions, see [FAQs](/en/self-host/quick-start/faqs).
|
|
</Tip>
|
|
|
|
## Before Deployment
|
|
|
|
Make sure your machine meets the following minimum system requirements.
|
|
|
|
### Hardware
|
|
|
|
- CPU >= 2 Core
|
|
- RAM >= 4 GiB
|
|
|
|
### Software
|
|
|
|
| Operating System | Required Software | Notes |
|
|
| :----------------------------- | :---------------------------------------- | :----- |
|
|
| macOS 10.14 or later | Docker Desktop | Configure the Docker virtual machine with at least 2 virtual CPUs and 8 GiB of memory. <br></br><br></br>For installation instructions, see [Install Docker Desktop on Mac](https://docs.docker.com/desktop/mac/install/). |
|
|
| Linux distributions | Docker 19.03+<br></br><br></br>Docker Compose 1.28+ | For installation instructions, see [Install Docker Engine](https://docs.docker.com/engine/install/) and [Install Docker Compose](https://docs.docker.com/compose/install/). |
|
|
| Windows with WSL 2 enabled | Docker Desktop | Store source code and data bound to Linux containers in the Linux file system rather than Windows. <br></br><br></br>For installation instructions, see [Install Docker Desktop on Windows](https://docs.docker.com/desktop/windows/install/#wsl-2-backend). |
|
|
|
|
|
|
## Deploy and Start Dify
|
|
|
|
<Steps>
|
|
<Step title="Clone Dify">
|
|
Clone the Dify source code to your local machine.
|
|
|
|
```bash
|
|
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="Start Dify">
|
|
|
|
1. Navigate to the `docker` directory in the Dify source code:
|
|
|
|
```bash
|
|
cd dify/docker
|
|
```
|
|
|
|
2. Copy the example environment configuration file:
|
|
|
|
```bash
|
|
cp .env.example .env
|
|
```
|
|
<Note>
|
|
When the frontend and backend run on different subdomains, set `COOKIE_DOMAIN` to the site's top-level domain (e.g., `example.com`) and set `NEXT_PUBLIC_COOKIE_DOMAIN` to `1` in the .`env` file.
|
|
|
|
The frontend and backend must be under the same top-level domain to share authentication cookies.
|
|
</Note>
|
|
|
|
3. Start the containers using the command that matches your Docker Compose version:
|
|
|
|
<CodeGroup>
|
|
```bash Docker Compose V2
|
|
docker compose up -d
|
|
```
|
|
```bash Docker Compose V1
|
|
docker-compose up -d
|
|
```
|
|
</CodeGroup>
|
|
|
|
<Tip>
|
|
Run `docker compose version` to check your Docker Compose version.
|
|
</Tip>
|
|
|
|
The following containers will be started:
|
|
|
|
- 5 core services: `api`, `worker`, `worker_beat`, `web`, `plugin_daemon`
|
|
- 6 dependent components: `weaviate`, `db_postgres`, `redis`, `nginx`, `ssrf_proxy`, `sandbox`
|
|
|
|
You should see output similar to the following, showing the status and start time of each container:
|
|
|
|
```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. Verify that all containers are running successfully:
|
|
|
|
```bash
|
|
docker compose ps
|
|
```
|
|
|
|
You should see output similar to the following, with each container in the `Up` or `healthy` status:
|
|
|
|
```bash
|
|
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>
|
|
|
|
## Access Dify
|
|
|
|
1. Open the administrator initialization page to set up the admin account:
|
|
|
|
```bash
|
|
# Local environment
|
|
http://localhost/install
|
|
|
|
# Server environment
|
|
http://your_server_ip/install
|
|
```
|
|
|
|
2. After completing the admin account setup, log in to Dify at:
|
|
|
|
```bash
|
|
# Local environment
|
|
http://localhost
|
|
|
|
# Server environment
|
|
http://your_server_ip
|
|
```
|
|
|
|
## Customize Dify
|
|
|
|
Modify the environment variable values in your local `.env` file, then restart Dify to apply the changes:
|
|
|
|
```
|
|
docker compose down
|
|
docker compose up -d
|
|
```
|
|
|
|
<Tip>
|
|
For more information, see [environment variables](/en/self-host/configuration/environments).
|
|
</Tip>
|
|
|
|
## Upgrade Dify
|
|
|
|
Upgrade steps may vary between releases. Refer to the upgrade guide for your target version provided in the [Releases](https://github.com/langgenius/dify/releases) page.
|
|
|
|
<Note>
|
|
|
|
After upgrading, check whether the `.env.example` file has changed and update your local `.env` file accordingly.
|
|
|
|
</Note> |