Skip to main content

Documentation Index

Fetch the complete documentation index at: https://dify-6c0370d8-codex-docker-env-split-docs.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

For common deployment questions, see FAQs.

Before Deployment

Make sure your machine meets the following minimum system requirements.

Hardware

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

Software

Operating SystemRequired SoftwareNotes
macOS 10.14 or laterDocker Desktop with Docker Compose 2.24.0+Configure the Docker virtual machine with at least 2 virtual CPUs and 8 GiB of memory.

For installation instructions, see Install Docker Desktop on Mac.
Linux distributionsDocker 19.03+

Docker Compose 2.24.0+
For installation instructions, see Install Docker Engine and Install Docker Compose.
Windows with WSL 2 enabledDocker Desktop with Docker Compose 2.24.0+Store source code and data bound to Linux containers in the Linux file system rather than Windows.

For installation instructions, see Install Docker Desktop on Windows.

Deploy and Start

1

Clone Dify

Clone the Dify source code to your local machine.
git clone --branch "$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest | jq -r .tag_name)" https://github.com/langgenius/dify.git
2

Start Dify

  1. Navigate to the docker directory in the Dify source code:
    cd dify/docker
    
  2. Copy the example environment configuration file:
    cp .env.example .env
    
    The root .env file contains the essential startup values. Optional and provider-specific settings live under envs/ as .env.example files. Copy only the files you need without the .example suffix before editing those advanced settings.
  3. Start the containers:
    docker compose up -d
    
    Dify uses optional Compose env_file entries. Run docker compose version and make sure your Docker Compose version is 2.24.0 or later.
    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:
    [+] 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:
    docker compose ps
    
    You should see output similar to the following, with each container in the Up or healthy status:
    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
    

Access

  1. Open the administrator initialization page to set up the admin account:
    # Local environment
    http://localhost/install
    
    # Server environment
    http://your_server_ip/install
    
  2. After completing the admin account setup, log in to Dify at:
    # Local environment
    http://localhost  
    
    # Server environment
    http://your_server_ip
    

Customize

Modify environment variables in your local .env file, then restart Dify to apply the changes:
docker compose down
docker compose up -d
For optional or provider-specific settings, copy the matching file from envs/ without the .example suffix, then edit the copied file. For example:
cp envs/vectorstores/milvus.env.example envs/vectorstores/milvus.env
Values in .env take precedence over values in files under envs/.
For more information, see environment variables.

Upgrade

Upgrade steps may vary between releases. Refer to the upgrade guide for your target version provided in the Releases page.
After upgrading, check whether .env.example or any copied envs/**/*.env.example files have changed, then update your local .env and optional envs/**/*.env files accordingly.