# ================================================================== # WARNING: This file is auto-generated by generate_docker_compose # Do not modify this file directly. Instead, update the .env.example # or docker-compose-template.yaml and regenerate this file. # ================================================================== services: api: image: langgenius/dify-api:0.15.3 container_name: api-${CONTAINER_NAME} restart: always env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} environment: MODE: api SENTRY_DSN: ${API_SENTRY_DSN:-} SENTRY_TRACES_SAMPLE_RATE: ${API_SENTRY_TRACES_SAMPLE_RATE:-1.0} SENTRY_PROFILES_SAMPLE_RATE: ${API_SENTRY_PROFILES_SAMPLE_RATE:-1.0} depends_on: - db - redis volumes: - ${DIFY_ROOT_PATH}/volumes/app/storage:/app/api/storage networks: - ssrf_proxy_network - default worker: image: langgenius/dify-api:0.15.3 container_name: worker-${CONTAINER_NAME} restart: always env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} environment: MODE: worker SENTRY_DSN: ${API_SENTRY_DSN:-} SENTRY_TRACES_SAMPLE_RATE: ${API_SENTRY_TRACES_SAMPLE_RATE:-1.0} SENTRY_PROFILES_SAMPLE_RATE: ${API_SENTRY_PROFILES_SAMPLE_RATE:-1.0} depends_on: - db - redis volumes: - ${DIFY_ROOT_PATH}/volumes/app/storage:/app/api/storage networks: - ssrf_proxy_network - default web: image: langgenius/dify-web:0.15.3 container_name: web-${CONTAINER_NAME} restart: always env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} environment: CONSOLE_API_URL: ${CONSOLE_API_URL:-} APP_API_URL: ${APP_API_URL:-} SENTRY_DSN: ${WEB_SENTRY_DSN:-} NEXT_TELEMETRY_DISABLED: ${NEXT_TELEMETRY_DISABLED:-0} TEXT_GENERATION_TIMEOUT_MS: ${TEXT_GENERATION_TIMEOUT_MS:-60000} CSP_WHITELIST: ${CSP_WHITELIST:-} TOP_K_MAX_VALUE: ${TOP_K_MAX_VALUE:-} INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH: ${INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH:-} db: image: postgres:15-alpine container_name: db-${CONTAINER_NAME} restart: always env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} environment: PGUSER: ${PGUSER:-postgres} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-difyai123456} POSTGRES_DB: ${POSTGRES_DB:-dify} PGDATA: ${PGDATA:-/var/lib/postgresql/data/pgdata} command: > postgres -c 'max_connections=${POSTGRES_MAX_CONNECTIONS:-100}' -c 'shared_buffers=${POSTGRES_SHARED_BUFFERS:-128MB}' -c 'work_mem=${POSTGRES_WORK_MEM:-4MB}' -c 'maintenance_work_mem=${POSTGRES_MAINTENANCE_WORK_MEM:-64MB}' -c 'effective_cache_size=${POSTGRES_EFFECTIVE_CACHE_SIZE:-4096MB}' volumes: - ${DIFY_ROOT_PATH}/volumes/db/data:/var/lib/postgresql/data healthcheck: test: [ 'CMD', 'pg_isready' ] interval: 1s timeout: 3s retries: 30 redis: image: redis:6-alpine container_name: redis-${CONTAINER_NAME} restart: always env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} environment: REDISCLI_AUTH: ${REDIS_PASSWORD:-difyai123456} volumes: - ${DIFY_ROOT_PATH}/volumes/redis/data:/data command: redis-server --requirepass ${REDIS_PASSWORD:-difyai123456} healthcheck: test: [ 'CMD', 'redis-cli', 'ping' ] sandbox: image: langgenius/dify-sandbox:0.2.10 container_name: sandbox-${CONTAINER_NAME} restart: always env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} environment: API_KEY: ${SANDBOX_API_KEY:-dify-sandbox} GIN_MODE: ${SANDBOX_GIN_MODE:-release} WORKER_TIMEOUT: ${SANDBOX_WORKER_TIMEOUT:-15} ENABLE_NETWORK: ${SANDBOX_ENABLE_NETWORK:-true} HTTP_PROXY: ${SANDBOX_HTTP_PROXY:-http://ssrf_proxy:3128} HTTPS_PROXY: ${SANDBOX_HTTPS_PROXY:-http://ssrf_proxy:3128} SANDBOX_PORT: ${SANDBOX_PORT:-8194} volumes: - ${DIFY_ROOT_PATH}/volumes/sandbox/dependencies:/dependencies healthcheck: test: [ 'CMD', 'curl', '-f', 'http://localhost:8194/health' ] networks: - ssrf_proxy_network plugin_daemon: image: langgenius/dify-plugin-daemon:0.0.1-local container_name: plugin_daemon-${CONTAINER_NAME} restart: always environment: DB_DATABASE: ${DB_PLUGIN_DATABASE:-dify_plugin} SERVER_PORT: ${PLUGIN_DAEMON_PORT:-5002} SERVER_KEY: ${PLUGIN_DAEMON_KEY:-lYkiYYT6owG+71oLerGzA7GXCgOT++6ovaezWAjpCjf+Sjc3ZtU+qUEi} MAX_PLUGIN_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800} PPROF_ENABLED: ${PLUGIN_PPROF_ENABLED:-false} DIFY_INNER_API_URL: ${PLUGIN_DIFY_INNER_API_URL:-http://api:5001} DIFY_INNER_API_KEY: ${INNER_API_KEY_FOR_PLUGIN:-QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1} PLUGIN_REMOTE_INSTALLING_HOST: ${PLUGIN_REMOTE_INSTALL_HOST:-0.0.0.0} PLUGIN_REMOTE_INSTALLING_PORT: ${PLUGIN_REMOTE_INSTALL_PORT:-5003} PLUGIN_WORKING_PATH: ${PLUGIN_WORKING_PATH:-/app/storage/cwd} FORCE_VERIFYING_SIGNATURE: ${FORCE_VERIFYING_SIGNATURE:-true} ports: - ${EXPOSE_PLUGIN_DEBUGGING_PORT:-5003}:${PLUGIN_DEBUGGING_PORT:-5003} volumes: - ${DIFY_ROOT_PATH}/volumes/plugin_daemon:/app/storage ssrf_proxy: image: ubuntu/squid:latest container_name: ssrf_proxy-${CONTAINER_NAME} restart: always env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} volumes: - ${DIFY_ROOT_PATH}/ssrf_proxy/squid.conf.template:/etc/squid/squid.conf.template - ${DIFY_ROOT_PATH}/ssrf_proxy/docker-entrypoint.sh:/docker-entrypoint-mount.sh entrypoint: [ 'sh', '-c', "cp /docker-entrypoint-mount.sh /docker-entrypoint.sh && sed -i 's/\r$$//' /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh && /docker-entrypoint.sh" ] environment: HTTP_PORT: ${SSRF_HTTP_PORT:-3128} COREDUMP_DIR: ${SSRF_COREDUMP_DIR:-/var/spool/squid} REVERSE_PROXY_PORT: ${SSRF_REVERSE_PROXY_PORT:-8194} SANDBOX_HOST: ${SSRF_SANDBOX_HOST:-sandbox} SANDBOX_PORT: ${SANDBOX_PORT:-8194} networks: - ssrf_proxy_network - default certbot: image: certbot/certbot container_name: certbot-${CONTAINER_NAME} env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} profiles: - certbot volumes: - ${DIFY_ROOT_PATH}/volumes/certbot/conf:/etc/letsencrypt - ${DIFY_ROOT_PATH}/volumes/certbot/www:/var/www/html - ${DIFY_ROOT_PATH}/volumes/certbot/logs:/var/log/letsencrypt - ${DIFY_ROOT_PATH}/volumes/certbot/conf/live:/etc/letsencrypt/live - ${DIFY_ROOT_PATH}/certbot/update-cert.template.txt:/update-cert.template.txt - ${DIFY_ROOT_PATH}/certbot/docker-entrypoint.sh:/docker-entrypoint.sh environment: - CERTBOT_EMAIL=${CERTBOT_EMAIL} - CERTBOT_DOMAIN=${CERTBOT_DOMAIN} - CERTBOT_OPTIONS=${CERTBOT_OPTIONS:-} entrypoint: [ '/docker-entrypoint.sh' ] command: [ 'tail', '-f', '/dev/null' ] nginx: image: nginx:latest container_name: nginx-${CONTAINER_NAME} restart: always env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} volumes: - ${DIFY_ROOT_PATH}/nginx/nginx.conf.template:/etc/nginx/nginx.conf.template - ${DIFY_ROOT_PATH}/nginx/proxy.conf.template:/etc/nginx/proxy.conf.template - ${DIFY_ROOT_PATH}/nginx/https.conf.template:/etc/nginx/https.conf.template - ${DIFY_ROOT_PATH}/nginx/conf.d:/etc/nginx/conf.d - ${DIFY_ROOT_PATH}/nginx/docker-entrypoint.sh:/docker-entrypoint-mount.sh - ${DIFY_ROOT_PATH}/nginx/ssl:/etc/ssl - ${DIFY_ROOT_PATH}/volumes/certbot/conf/live:/etc/letsencrypt/live - ${DIFY_ROOT_PATH}/volumes/certbot/conf:/etc/letsencrypt - ${DIFY_ROOT_PATH}/volumes/certbot/www:/var/www/html entrypoint: [ 'sh', '-c', "cp /docker-entrypoint-mount.sh /docker-entrypoint.sh && sed -i 's/\r$$//' /docker-entrypoint.sh && chmod +x /docker-entrypoint.sh && /docker-entrypoint.sh" ] environment: NGINX_SERVER_NAME: ${NGINX_SERVER_NAME:-_} NGINX_HTTPS_ENABLED: ${NGINX_HTTPS_ENABLED:-false} NGINX_SSL_PORT: ${NGINX_SSL_PORT:-443} NGINX_PORT: ${NGINX_PORT:-80} NGINX_SSL_CERT_FILENAME: ${NGINX_SSL_CERT_FILENAME:-dify.crt} NGINX_SSL_CERT_KEY_FILENAME: ${NGINX_SSL_CERT_KEY_FILENAME:-dify.key} NGINX_SSL_PROTOCOLS: ${NGINX_SSL_PROTOCOLS:-TLSv1.1 TLSv1.2 TLSv1.3} NGINX_WORKER_PROCESSES: ${NGINX_WORKER_PROCESSES:-auto} NGINX_CLIENT_MAX_BODY_SIZE: ${NGINX_CLIENT_MAX_BODY_SIZE:-15M} NGINX_KEEPALIVE_TIMEOUT: ${NGINX_KEEPALIVE_TIMEOUT:-65} NGINX_PROXY_READ_TIMEOUT: ${NGINX_PROXY_READ_TIMEOUT:-3600s} NGINX_PROXY_SEND_TIMEOUT: ${NGINX_PROXY_SEND_TIMEOUT:-3600s} NGINX_ENABLE_CERTBOT_CHALLENGE: ${NGINX_ENABLE_CERTBOT_CHALLENGE:-false} CERTBOT_DOMAIN: ${CERTBOT_DOMAIN:-} depends_on: - api - web ports: - ${PANEL_APP_PORT_HTTP:-8080}:${NGINX_PORT:-80} - ${PANEL_APP_PORT_HTTPS:-8443}:${NGINX_SSL_PORT:-443} weaviate: image: semitechnologies/weaviate:1.19.0 container_name: weaviate-${CONTAINER_NAME} profiles: - '' - weaviate restart: always env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} volumes: - ${DIFY_ROOT_PATH}/volumes/weaviate:/var/lib/weaviate environment: PERSISTENCE_DATA_PATH: ${WEAVIATE_PERSISTENCE_DATA_PATH:-/var/lib/weaviate} QUERY_DEFAULTS_LIMIT: ${WEAVIATE_QUERY_DEFAULTS_LIMIT:-25} AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: ${WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED:-false} DEFAULT_VECTORIZER_MODULE: ${WEAVIATE_DEFAULT_VECTORIZER_MODULE:-none} CLUSTER_HOSTNAME: ${WEAVIATE_CLUSTER_HOSTNAME:-node1} AUTHENTICATION_APIKEY_ENABLED: ${WEAVIATE_AUTHENTICATION_APIKEY_ENABLED:-true} AUTHENTICATION_APIKEY_ALLOWED_KEYS: ${WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS:-WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih} AUTHENTICATION_APIKEY_USERS: ${WEAVIATE_AUTHENTICATION_APIKEY_USERS:-hello@dify.ai} AUTHORIZATION_ADMINLIST_ENABLED: ${WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED:-true} AUTHORIZATION_ADMINLIST_USERS: ${WEAVIATE_AUTHORIZATION_ADMINLIST_USERS:-hello@dify.ai} qdrant: image: langgenius/qdrant:v1.7.3 container_name: qdrant-${CONTAINER_NAME} profiles: - qdrant restart: always env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} volumes: - ${DIFY_ROOT_PATH}/volumes/qdrant:/qdrant/storage environment: QDRANT_API_KEY: ${QDRANT_API_KEY:-difyai123456} couchbase-server: build: ./couchbase-server profiles: - couchbase restart: always container_name: couchbase-server-${CONTAINER_NAME} env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} environment: - CLUSTER_NAME=dify_search - COUCHBASE_ADMINISTRATOR_USERNAME=${COUCHBASE_USER:-Administrator} - COUCHBASE_ADMINISTRATOR_PASSWORD=${COUCHBASE_PASSWORD:-password} - COUCHBASE_BUCKET=${COUCHBASE_BUCKET_NAME:-Embeddings} - COUCHBASE_BUCKET_RAMSIZE=512 - COUCHBASE_RAM_SIZE=2048 - COUCHBASE_EVENTING_RAM_SIZE=512 - COUCHBASE_INDEX_RAM_SIZE=512 - COUCHBASE_FTS_RAM_SIZE=1024 hostname: couchbase-server working_dir: /opt/couchbase stdin_open: true tty: true entrypoint: [ "" ] command: sh -c "/opt/couchbase/init/init-cbserver.sh" volumes: - ${DIFY_ROOT_PATH}/volumes/couchbase/data:/opt/couchbase/var/lib/couchbase/data healthcheck: test: [ "CMD-SHELL", "curl -s -f -u Administrator:password http://localhost:8091/pools/default/buckets | grep -q '\\[{' || exit 1" ] interval: 10s retries: 10 start_period: 30s timeout: 10s pgvector: image: pgvector/pgvector:pg16 container_name: pgvector-${CONTAINER_NAME} profiles: - pgvector restart: always env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} environment: PGUSER: ${PGVECTOR_PGUSER:-postgres} POSTGRES_PASSWORD: ${PGVECTOR_POSTGRES_PASSWORD:-difyai123456} POSTGRES_DB: ${PGVECTOR_POSTGRES_DB:-dify} PGDATA: ${PGVECTOR_PGDATA:-/var/lib/postgresql/data/pgdata} volumes: - ${DIFY_ROOT_PATH}/volumes/pgvector/data:/var/lib/postgresql/data healthcheck: test: [ 'CMD', 'pg_isready' ] interval: 1s timeout: 3s retries: 30 pgvecto-rs: image: tensorchord/pgvecto-rs:pg16-v0.3.0 container_name: pgvecto-rs-${CONTAINER_NAME} profiles: - pgvecto-rs restart: always env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} environment: PGUSER: ${PGVECTOR_PGUSER:-postgres} POSTGRES_PASSWORD: ${PGVECTOR_POSTGRES_PASSWORD:-difyai123456} POSTGRES_DB: ${PGVECTOR_POSTGRES_DB:-dify} PGDATA: ${PGVECTOR_PGDATA:-/var/lib/postgresql/data/pgdata} volumes: - ${DIFY_ROOT_PATH}/volumes/pgvecto_rs/data:/var/lib/postgresql/data healthcheck: test: [ 'CMD', 'pg_isready' ] interval: 1s timeout: 3s retries: 30 chroma: image: ghcr.io/chroma-core/chroma:0.5.20 container_name: chroma-${CONTAINER_NAME} profiles: - chroma restart: always env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} volumes: - ${DIFY_ROOT_PATH}/volumes/chroma:/chroma/chroma environment: CHROMA_SERVER_AUTHN_CREDENTIALS: ${CHROMA_SERVER_AUTHN_CREDENTIALS:-difyai123456} CHROMA_SERVER_AUTHN_PROVIDER: ${CHROMA_SERVER_AUTHN_PROVIDER:-chromadb.auth.token_authn.TokenAuthenticationServerProvider} IS_PERSISTENT: ${CHROMA_IS_PERSISTENT:-TRUE} oceanbase: image: quay.io/oceanbase/oceanbase-ce:4.3.3.0-100000142024101215 container_name: oceanbase-${CONTAINER_NAME} profiles: - oceanbase restart: always env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} volumes: - ${DIFY_ROOT_PATH}/volumes/oceanbase/data:/root/ob - ${DIFY_ROOT_PATH}/volumes/oceanbase/conf:/root/.obd/cluster - ${DIFY_ROOT_PATH}/volumes/oceanbase/init.d:/root/boot/init.d environment: OB_MEMORY_LIMIT: ${OCEANBASE_MEMORY_LIMIT:-6G} OB_SYS_PASSWORD: ${OCEANBASE_VECTOR_PASSWORD:-difyai123456} OB_TENANT_PASSWORD: ${OCEANBASE_VECTOR_PASSWORD:-difyai123456} OB_CLUSTER_NAME: ${OCEANBASE_CLUSTER_NAME:-difyai} OB_SERVER_IP: '127.0.0.1' oracle: image: container-registry.oracle.com/database/free:latest container_name: oracle-${CONTAINER_NAME} profiles: - oracle restart: always env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} volumes: - source: oradata type: volume target: /opt/oracle/oradata - ${DIFY_ROOT_PATH}/startupscripts:/opt/oracle/scripts/startup environment: ORACLE_PWD: ${ORACLE_PWD:-Dify123456} ORACLE_CHARACTERSET: ${ORACLE_CHARACTERSET:-AL32UTF8} etcd: image: quay.io/coreos/etcd:v3.5.18 container_name: milvus-etcd-${CONTAINER_NAME} env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} profiles: - milvus environment: ETCD_AUTO_COMPACTION_MODE: ${ETCD_AUTO_COMPACTION_MODE:-revision} ETCD_AUTO_COMPACTION_RETENTION: ${ETCD_AUTO_COMPACTION_RETENTION:-1000} ETCD_QUOTA_BACKEND_BYTES: ${ETCD_QUOTA_BACKEND_BYTES:-4294967296} ETCD_SNAPSHOT_COUNT: ${ETCD_SNAPSHOT_COUNT:-50000} volumes: - ${DIFY_ROOT_PATH}/volumes/milvus/etcd:/etcd command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd healthcheck: test: [ 'CMD', 'etcdctl', 'endpoint', 'health' ] interval: 30s timeout: 20s retries: 3 networks: - milvus minio: image: minio/minio:RELEASE.2023-03-20T20-16-18Z container_name: milvus-minio-${CONTAINER_NAME} env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} profiles: - milvus environment: MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin} MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin} volumes: - ${DIFY_ROOT_PATH}/volumes/milvus/minio:/minio_data command: minio server /minio_data --console-address ":9001" healthcheck: test: [ 'CMD', 'curl', '-f', 'http://localhost:9000/minio/health/live' ] interval: 30s timeout: 20s retries: 3 networks: - milvus milvus-standalone: image: milvusdb/milvus:v2.5.0-beta container_name: milvus-standalone-${CONTAINER_NAME} env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} profiles: - milvus command: [ 'milvus', 'run', 'standalone' ] environment: ETCD_ENDPOINTS: ${ETCD_ENDPOINTS:-etcd:2379} MINIO_ADDRESS: ${MINIO_ADDRESS:-minio:9000} common.security.authorizationEnabled: ${MILVUS_AUTHORIZATION_ENABLED:-true} volumes: - ${DIFY_ROOT_PATH}/volumes/milvus/milvus:/var/lib/milvus healthcheck: test: [ 'CMD', 'curl', '-f', 'http://localhost:9091/healthz' ] interval: 30s start_period: 90s timeout: 20s retries: 3 depends_on: - etcd - minio ports: - 19530:19530 - 9091:9091 networks: - milvus opensearch: image: opensearchproject/opensearch:latest container_name: opensearch-${CONTAINER_NAME} env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} profiles: - opensearch environment: discovery.type: ${OPENSEARCH_DISCOVERY_TYPE:-single-node} bootstrap.memory_lock: ${OPENSEARCH_BOOTSTRAP_MEMORY_LOCK:-true} OPENSEARCH_JAVA_OPTS: -Xms${OPENSEARCH_JAVA_OPTS_MIN:-512m} -Xmx${OPENSEARCH_JAVA_OPTS_MAX:-1024m} OPENSEARCH_INITIAL_ADMIN_PASSWORD: ${OPENSEARCH_INITIAL_ADMIN_PASSWORD:-Qazwsxedc!@#123} ulimits: memlock: soft: ${OPENSEARCH_MEMLOCK_SOFT:--1} hard: ${OPENSEARCH_MEMLOCK_HARD:--1} nofile: soft: ${OPENSEARCH_NOFILE_SOFT:-65536} hard: ${OPENSEARCH_NOFILE_HARD:-65536} volumes: - ${DIFY_ROOT_PATH}/volumes/opensearch/data:/usr/share/opensearch/data networks: - opensearch-net opensearch-dashboards: image: opensearchproject/opensearch-dashboards:latest container_name: opensearch-dashboards-${CONTAINER_NAME} env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} profiles: - opensearch environment: OPENSEARCH_HOSTS: '["https://opensearch:9200"]' volumes: - ${DIFY_ROOT_PATH}/volumes/opensearch/opensearch_dashboards.yml:/usr/share/opensearch-dashboards/config/opensearch_dashboards.yml networks: - opensearch-net depends_on: - opensearch myscale: image: myscale/myscaledb:1.6.4 container_name: myscale-${CONTAINER_NAME} profiles: - myscale restart: always env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} tty: true volumes: - ${DIFY_ROOT_PATH}/volumes/myscale/data:/var/lib/clickhouse - ${DIFY_ROOT_PATH}/volumes/myscale/log:/var/log/clickhouse-server - ${DIFY_ROOT_PATH}/volumes/myscale/config/users.d/custom_users_config.xml:/etc/clickhouse-server/users.d/custom_users_config.xml ports: - ${MYSCALE_PORT:-8123}:${MYSCALE_PORT:-8123} elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:8.17.2 container_name: elasticsearch-${CONTAINER_NAME} profiles: - elasticsearch - elasticsearch-ja restart: always env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} volumes: - ${DIFY_ROOT_PATH}/elasticsearch/docker-entrypoint.sh:/docker-entrypoint-mount.sh - dify_es01_data:/usr/share/elasticsearch/data environment: ELASTIC_PASSWORD: ${ELASTICSEARCH_PASSWORD:-elastic} VECTOR_STORE: ${VECTOR_STORE:-} cluster.name: dify-es-cluster node.name: dify-es0 discovery.type: single-node xpack.license.self_generated.type: basic xpack.security.enabled: 'true' xpack.security.enrollment.enabled: 'false' xpack.security.http.ssl.enabled: 'false' ports: - ${ELASTICSEARCH_PORT:-9200}:9200 deploy: resources: limits: memory: 2g entrypoint: [ 'sh', '-c', "sh /docker-entrypoint-mount.sh" ] healthcheck: test: [ 'CMD', 'curl', '-s', 'http://localhost:9200/_cluster/health?pretty' ] interval: 30s timeout: 10s retries: 50 kibana: image: docker.elastic.co/kibana/kibana:8.14.3 container_name: kibana-${CONTAINER_NAME} profiles: - elasticsearch depends_on: - elasticsearch restart: always env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} environment: XPACK_ENCRYPTEDSAVEDOBJECTS_ENCRYPTIONKEY: d1a66dfd-c4d3-4a0a-8290-2abcb83ab3aa NO_PROXY: localhost,127.0.0.1,elasticsearch,kibana XPACK_SECURITY_ENABLED: 'true' XPACK_SECURITY_ENROLLMENT_ENABLED: 'false' XPACK_SECURITY_HTTP_SSL_ENABLED: 'false' XPACK_FLEET_ISAIRGAPPED: 'true' I18N_LOCALE: zh-CN SERVER_PORT: '5601' ELASTICSEARCH_HOSTS: http://elasticsearch:9200 ports: - ${KIBANA_PORT:-5601}:5601 healthcheck: test: [ 'CMD-SHELL', 'curl -s http://localhost:5601 >/dev/null || exit 1' ] interval: 30s timeout: 10s retries: 3 unstructured: image: downloads.unstructured.io/unstructured-io/unstructured-api:latest container_name: unstructured-${CONTAINER_NAME} profiles: - unstructured restart: always env_file: - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} - ${APP_ENV_FILE:-/etc/1panel/envs/dify/dify.env} - ${ENV_FILE:-/etc/1panel/envs/default.env} volumes: - ${DIFY_ROOT_PATH}/volumes/unstructured:/app/data networks: ssrf_proxy_network: driver: bridge internal: true milvus: driver: bridge opensearch-net: driver: bridge internal: true volumes: oradata: dify_es01_data: