Linux中使用Docker安裝DIFY搭建本地支持庫和Agent

Dify?是一款開源的大語言模型(LLM) 應用開發平臺。它融合了后端即服務(Backend as Service)和?LLMOps?的理念,使開發者可以快速搭建生產級的生成式 AI 應用。即使你是非技術人員,也能參與到 AI 應用的定義和數據運營過程中。

然而它的安裝不是一帆風順,尤其是按照官方文檔中使用docker安裝,剛開始都是以失敗告終。主要報錯如下,在網上也搜了很多教程,始終沒有解決問題。

按照官方教程https://docs.dify.ai

git?clone?https://github.com/langgenius/dify.gitcd?dify/dockerdocker compose up -d

最終的解決辦法是去1.修改成為國內代理的docker鏡像源,2.修改安裝文件下的docker/docker-compose.yaml的docker鏡像路徑。最終安裝成功。

第一步:

echo?'{"registry-mirrors": ["https://docker.1ms.run"]}'?| sudo?tee?/etc/docker/daemon.json > /dev/nullsystemctl daemon-reloadsystemctl restart docker

第二步:vi docker/docker-compose.yaml,修改后的完整文件,可以直接拿去用。見文末

最終拉取鏡像等待最終運行成功。

docker compose up -d

在瀏覽器中打開服務器的地址http://localhost,如下開始配置

登錄成功

docker/docker-compose.yaml文件

# ==================================================================# 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.# ==================================================================x-shared-env: &shared-api-worker-env? CONSOLE_API_URL: ${CONSOLE_API_URL:-}? CONSOLE_WEB_URL: ${CONSOLE_WEB_URL:-}? SERVICE_API_URL: ${SERVICE_API_URL:-}? APP_API_URL: ${APP_API_URL:-}? APP_WEB_URL: ${APP_WEB_URL:-}? FILES_URL: ${FILES_URL:-}? LOG_LEVEL: ${LOG_LEVEL:-INFO}? LOG_FILE: ${LOG_FILE:-/app/logs/server.log}? LOG_FILE_MAX_SIZE: ${LOG_FILE_MAX_SIZE:-20}? LOG_FILE_BACKUP_COUNT: ${LOG_FILE_BACKUP_COUNT:-5}? LOG_DATEFORMAT: ${LOG_DATEFORMAT:-%Y-%m-%d %H:%M:%S}? LOG_TZ: ${LOG_TZ:-UTC}? DEBUG:?${DEBUG:-false}? FLASK_DEBUG:?${FLASK_DEBUG:-false}? SECRET_KEY: ${SECRET_KEY:-sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U}? INIT_PASSWORD: ${INIT_PASSWORD:-}? DEPLOY_ENV: ${DEPLOY_ENV:-PRODUCTION}? CHECK_UPDATE_URL: ${CHECK_UPDATE_URL:-https://updates.dify.ai}? OPENAI_API_BASE: ${OPENAI_API_BASE:-https://api.openai.com/v1}? MIGRATION_ENABLED: ${MIGRATION_ENABLED:-true}? FILES_ACCESS_TIMEOUT: ${FILES_ACCESS_TIMEOUT:-300}? ACCESS_TOKEN_EXPIRE_MINUTES: ${ACCESS_TOKEN_EXPIRE_MINUTES:-60}? REFRESH_TOKEN_EXPIRE_DAYS: ${REFRESH_TOKEN_EXPIRE_DAYS:-30}? APP_MAX_ACTIVE_REQUESTS: ${APP_MAX_ACTIVE_REQUESTS:-0}? APP_MAX_EXECUTION_TIME: ${APP_MAX_EXECUTION_TIME:-1200}? DIFY_BIND_ADDRESS: ${DIFY_BIND_ADDRESS:-0.0.0.0}? DIFY_PORT: ${DIFY_PORT:-5001}? SERVER_WORKER_AMOUNT: ${SERVER_WORKER_AMOUNT:-1}? SERVER_WORKER_CLASS: ${SERVER_WORKER_CLASS:-gevent}? SERVER_WORKER_CONNECTIONS: ${SERVER_WORKER_CONNECTIONS:-10}? CELERY_WORKER_CLASS: ${CELERY_WORKER_CLASS:-}? GUNICORN_TIMEOUT: ${GUNICORN_TIMEOUT:-360}? CELERY_WORKER_AMOUNT: ${CELERY_WORKER_AMOUNT:-}? CELERY_AUTO_SCALE: ${CELERY_AUTO_SCALE:-false}? CELERY_MAX_WORKERS: ${CELERY_MAX_WORKERS:-}? CELERY_MIN_WORKERS: ${CELERY_MIN_WORKERS:-}? API_TOOL_DEFAULT_CONNECT_TIMEOUT: ${API_TOOL_DEFAULT_CONNECT_TIMEOUT:-10}? API_TOOL_DEFAULT_READ_TIMEOUT: ${API_TOOL_DEFAULT_READ_TIMEOUT:-60}? DB_USERNAME: ${DB_USERNAME:-postgres}? DB_PASSWORD: ${DB_PASSWORD:-difyai123456}? DB_HOST: ${DB_HOST:-db}? DB_PORT: ${DB_PORT:-5432}? DB_DATABASE: ${DB_DATABASE:-dify}? SQLALCHEMY_POOL_SIZE: ${SQLALCHEMY_POOL_SIZE:-30}? SQLALCHEMY_POOL_RECYCLE: ${SQLALCHEMY_POOL_RECYCLE:-3600}? SQLALCHEMY_ECHO: ${SQLALCHEMY_ECHO:-false}? POSTGRES_MAX_CONNECTIONS: ${POSTGRES_MAX_CONNECTIONS:-100}? POSTGRES_SHARED_BUFFERS: ${POSTGRES_SHARED_BUFFERS:-128MB}? POSTGRES_WORK_MEM: ${POSTGRES_WORK_MEM:-4MB}? POSTGRES_MAINTENANCE_WORK_MEM: ${POSTGRES_MAINTENANCE_WORK_MEM:-64MB}? POSTGRES_EFFECTIVE_CACHE_SIZE: ${POSTGRES_EFFECTIVE_CACHE_SIZE:-4096MB}? REDIS_HOST: ${REDIS_HOST:-redis}? REDIS_PORT: ${REDIS_PORT:-6379}? REDIS_USERNAME: ${REDIS_USERNAME:-}? REDIS_PASSWORD: ${REDIS_PASSWORD:-difyai123456}? REDIS_USE_SSL: ${REDIS_USE_SSL:-false}? REDIS_DB: ${REDIS_DB:-0}? REDIS_USE_SENTINEL: ${REDIS_USE_SENTINEL:-false}? REDIS_SENTINELS: ${REDIS_SENTINELS:-}? REDIS_SENTINEL_SERVICE_NAME: ${REDIS_SENTINEL_SERVICE_NAME:-}? REDIS_SENTINEL_USERNAME: ${REDIS_SENTINEL_USERNAME:-}? REDIS_SENTINEL_PASSWORD: ${REDIS_SENTINEL_PASSWORD:-}? REDIS_SENTINEL_SOCKET_TIMEOUT: ${REDIS_SENTINEL_SOCKET_TIMEOUT:-0.1}? REDIS_USE_CLUSTERS: ${REDIS_USE_CLUSTERS:-false}? REDIS_CLUSTERS: ${REDIS_CLUSTERS:-}? REDIS_CLUSTERS_PASSWORD: ${REDIS_CLUSTERS_PASSWORD:-}? CELERY_BROKER_URL: ${CELERY_BROKER_URL:-redis://:difyai123456@redis:6379/1}? BROKER_USE_SSL: ${BROKER_USE_SSL:-false}? CELERY_USE_SENTINEL: ${CELERY_USE_SENTINEL:-false}? CELERY_SENTINEL_MASTER_NAME: ${CELERY_SENTINEL_MASTER_NAME:-}? CELERY_SENTINEL_SOCKET_TIMEOUT: ${CELERY_SENTINEL_SOCKET_TIMEOUT:-0.1}? WEB_API_CORS_ALLOW_ORIGINS: ${WEB_API_CORS_ALLOW_ORIGINS:-*}? CONSOLE_CORS_ALLOW_ORIGINS: ${CONSOLE_CORS_ALLOW_ORIGINS:-*}? STORAGE_TYPE: ${STORAGE_TYPE:-opendal}? OPENDAL_SCHEME: ${OPENDAL_SCHEME:-fs}? OPENDAL_FS_ROOT: ${OPENDAL_FS_ROOT:-storage}? S3_ENDPOINT: ${S3_ENDPOINT:-}? S3_REGION: ${S3_REGION:-us-east-1}? S3_BUCKET_NAME: ${S3_BUCKET_NAME:-difyai}? S3_ACCESS_KEY: ${S3_ACCESS_KEY:-}? S3_SECRET_KEY: ${S3_SECRET_KEY:-}? S3_USE_AWS_MANAGED_IAM: ${S3_USE_AWS_MANAGED_IAM:-false}? AZURE_BLOB_ACCOUNT_NAME: ${AZURE_BLOB_ACCOUNT_NAME:-difyai}? AZURE_BLOB_ACCOUNT_KEY: ${AZURE_BLOB_ACCOUNT_KEY:-difyai}? AZURE_BLOB_CONTAINER_NAME: ${AZURE_BLOB_CONTAINER_NAME:-difyai-container}? AZURE_BLOB_ACCOUNT_URL: ${AZURE_BLOB_ACCOUNT_URL:-https://<your_account_name>.blob.core.windows.net}? GOOGLE_STORAGE_BUCKET_NAME: ${GOOGLE_STORAGE_BUCKET_NAME:-your-bucket-name}? GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64: ${GOOGLE_STORAGE_SERVICE_ACCOUNT_JSON_BASE64:-}? ALIYUN_OSS_BUCKET_NAME: ${ALIYUN_OSS_BUCKET_NAME:-your-bucket-name}? ALIYUN_OSS_ACCESS_KEY: ${ALIYUN_OSS_ACCESS_KEY:-your-access-key}? ALIYUN_OSS_SECRET_KEY: ${ALIYUN_OSS_SECRET_KEY:-your-secret-key}? ALIYUN_OSS_ENDPOINT: ${ALIYUN_OSS_ENDPOINT:-https://oss-ap-southeast-1-internal.aliyuncs.com}? ALIYUN_OSS_REGION: ${ALIYUN_OSS_REGION:-ap-southeast-1}? ALIYUN_OSS_AUTH_VERSION: ${ALIYUN_OSS_AUTH_VERSION:-v4}? ALIYUN_OSS_PATH: ${ALIYUN_OSS_PATH:-your-path}? TENCENT_COS_BUCKET_NAME: ${TENCENT_COS_BUCKET_NAME:-your-bucket-name}? TENCENT_COS_SECRET_KEY: ${TENCENT_COS_SECRET_KEY:-your-secret-key}? TENCENT_COS_SECRET_ID: ${TENCENT_COS_SECRET_ID:-your-secret-id}? TENCENT_COS_REGION: ${TENCENT_COS_REGION:-your-region}? TENCENT_COS_SCHEME: ${TENCENT_COS_SCHEME:-your-scheme}? OCI_ENDPOINT: ${OCI_ENDPOINT:-https://objectstorage.us-ashburn-1.oraclecloud.com}? OCI_BUCKET_NAME: ${OCI_BUCKET_NAME:-your-bucket-name}? OCI_ACCESS_KEY: ${OCI_ACCESS_KEY:-your-access-key}? OCI_SECRET_KEY: ${OCI_SECRET_KEY:-your-secret-key}? OCI_REGION: ${OCI_REGION:-us-ashburn-1}? HUAWEI_OBS_BUCKET_NAME: ${HUAWEI_OBS_BUCKET_NAME:-your-bucket-name}? HUAWEI_OBS_SECRET_KEY: ${HUAWEI_OBS_SECRET_KEY:-your-secret-key}? HUAWEI_OBS_ACCESS_KEY: ${HUAWEI_OBS_ACCESS_KEY:-your-access-key}? HUAWEI_OBS_SERVER: ${HUAWEI_OBS_SERVER:-your-server-url}? VOLCENGINE_TOS_BUCKET_NAME: ${VOLCENGINE_TOS_BUCKET_NAME:-your-bucket-name}? VOLCENGINE_TOS_SECRET_KEY: ${VOLCENGINE_TOS_SECRET_KEY:-your-secret-key}? VOLCENGINE_TOS_ACCESS_KEY: ${VOLCENGINE_TOS_ACCESS_KEY:-your-access-key}? VOLCENGINE_TOS_ENDPOINT: ${VOLCENGINE_TOS_ENDPOINT:-your-server-url}? VOLCENGINE_TOS_REGION: ${VOLCENGINE_TOS_REGION:-your-region}? BAIDU_OBS_BUCKET_NAME: ${BAIDU_OBS_BUCKET_NAME:-your-bucket-name}? BAIDU_OBS_SECRET_KEY: ${BAIDU_OBS_SECRET_KEY:-your-secret-key}? BAIDU_OBS_ACCESS_KEY: ${BAIDU_OBS_ACCESS_KEY:-your-access-key}? BAIDU_OBS_ENDPOINT: ${BAIDU_OBS_ENDPOINT:-your-server-url}? SUPABASE_BUCKET_NAME: ${SUPABASE_BUCKET_NAME:-your-bucket-name}? SUPABASE_API_KEY: ${SUPABASE_API_KEY:-your-access-key}? SUPABASE_URL: ${SUPABASE_URL:-your-server-url}? VECTOR_STORE: ${VECTOR_STORE:-weaviate}? WEAVIATE_ENDPOINT: ${WEAVIATE_ENDPOINT:-http://weaviate:8080}? WEAVIATE_API_KEY: ${WEAVIATE_API_KEY:-WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih}? QDRANT_URL: ${QDRANT_URL:-http://qdrant:6333}? QDRANT_API_KEY: ${QDRANT_API_KEY:-difyai123456}? QDRANT_CLIENT_TIMEOUT: ${QDRANT_CLIENT_TIMEOUT:-20}? QDRANT_GRPC_ENABLED: ${QDRANT_GRPC_ENABLED:-false}? QDRANT_GRPC_PORT: ${QDRANT_GRPC_PORT:-6334}? MILVUS_URI: ${MILVUS_URI:-http://127.0.0.1:19530}? MILVUS_TOKEN: ${MILVUS_TOKEN:-}? MILVUS_USER: ${MILVUS_USER:-root}? MILVUS_PASSWORD: ${MILVUS_PASSWORD:-Milvus}? MILVUS_ENABLE_HYBRID_SEARCH: ${MILVUS_ENABLE_HYBRID_SEARCH:-False}? MYSCALE_HOST: ${MYSCALE_HOST:-myscale}? MYSCALE_PORT: ${MYSCALE_PORT:-8123}? MYSCALE_USER: ${MYSCALE_USER:-default}? MYSCALE_PASSWORD: ${MYSCALE_PASSWORD:-}? MYSCALE_DATABASE: ${MYSCALE_DATABASE:-dify}? MYSCALE_FTS_PARAMS: ${MYSCALE_FTS_PARAMS:-}? COUCHBASE_CONNECTION_STRING: ${COUCHBASE_CONNECTION_STRING:-couchbase://couchbase-server}? COUCHBASE_USER: ${COUCHBASE_USER:-Administrator}? COUCHBASE_PASSWORD: ${COUCHBASE_PASSWORD:-password}? COUCHBASE_BUCKET_NAME: ${COUCHBASE_BUCKET_NAME:-Embeddings}? COUCHBASE_SCOPE_NAME: ${COUCHBASE_SCOPE_NAME:-_default}? PGVECTOR_HOST: ${PGVECTOR_HOST:-pgvector}? PGVECTOR_PORT: ${PGVECTOR_PORT:-5432}? PGVECTOR_USER: ${PGVECTOR_USER:-postgres}? PGVECTOR_PASSWORD: ${PGVECTOR_PASSWORD:-difyai123456}? PGVECTOR_DATABASE: ${PGVECTOR_DATABASE:-dify}? PGVECTOR_MIN_CONNECTION: ${PGVECTOR_MIN_CONNECTION:-1}? PGVECTOR_MAX_CONNECTION: ${PGVECTOR_MAX_CONNECTION:-5}? PGVECTO_RS_HOST: ${PGVECTO_RS_HOST:-pgvecto-rs}? PGVECTO_RS_PORT: ${PGVECTO_RS_PORT:-5432}? PGVECTO_RS_USER: ${PGVECTO_RS_USER:-postgres}? PGVECTO_RS_PASSWORD: ${PGVECTO_RS_PASSWORD:-difyai123456}? PGVECTO_RS_DATABASE: ${PGVECTO_RS_DATABASE:-dify}? ANALYTICDB_KEY_ID: ${ANALYTICDB_KEY_ID:-your-ak}? ANALYTICDB_KEY_SECRET: ${ANALYTICDB_KEY_SECRET:-your-sk}? ANALYTICDB_REGION_ID: ${ANALYTICDB_REGION_ID:-cn-hangzhou}? ANALYTICDB_INSTANCE_ID: ${ANALYTICDB_INSTANCE_ID:-gp-ab123456}? ANALYTICDB_ACCOUNT: ${ANALYTICDB_ACCOUNT:-testaccount}? ANALYTICDB_PASSWORD: ${ANALYTICDB_PASSWORD:-testpassword}? ANALYTICDB_NAMESPACE: ${ANALYTICDB_NAMESPACE:-dify}? ANALYTICDB_NAMESPACE_PASSWORD: ${ANALYTICDB_NAMESPACE_PASSWORD:-difypassword}? ANALYTICDB_HOST: ${ANALYTICDB_HOST:-gp-test.aliyuncs.com}? ANALYTICDB_PORT: ${ANALYTICDB_PORT:-5432}? ANALYTICDB_MIN_CONNECTION: ${ANALYTICDB_MIN_CONNECTION:-1}? ANALYTICDB_MAX_CONNECTION: ${ANALYTICDB_MAX_CONNECTION:-5}? TIDB_VECTOR_HOST: ${TIDB_VECTOR_HOST:-tidb}? TIDB_VECTOR_PORT: ${TIDB_VECTOR_PORT:-4000}? TIDB_VECTOR_USER: ${TIDB_VECTOR_USER:-}? TIDB_VECTOR_PASSWORD: ${TIDB_VECTOR_PASSWORD:-}? TIDB_VECTOR_DATABASE: ${TIDB_VECTOR_DATABASE:-dify}? TIDB_ON_QDRANT_URL: ${TIDB_ON_QDRANT_URL:-http://127.0.0.1}? TIDB_ON_QDRANT_API_KEY: ${TIDB_ON_QDRANT_API_KEY:-dify}? TIDB_ON_QDRANT_CLIENT_TIMEOUT: ${TIDB_ON_QDRANT_CLIENT_TIMEOUT:-20}? TIDB_ON_QDRANT_GRPC_ENABLED: ${TIDB_ON_QDRANT_GRPC_ENABLED:-false}? TIDB_ON_QDRANT_GRPC_PORT: ${TIDB_ON_QDRANT_GRPC_PORT:-6334}? TIDB_PUBLIC_KEY: ${TIDB_PUBLIC_KEY:-dify}? TIDB_PRIVATE_KEY: ${TIDB_PRIVATE_KEY:-dify}? TIDB_API_URL: ${TIDB_API_URL:-http://127.0.0.1}? TIDB_IAM_API_URL: ${TIDB_IAM_API_URL:-http://127.0.0.1}? TIDB_REGION: ${TIDB_REGION:-regions/aws-us-east-1}? TIDB_PROJECT_ID: ${TIDB_PROJECT_ID:-dify}? TIDB_SPEND_LIMIT: ${TIDB_SPEND_LIMIT:-100}? CHROMA_HOST: ${CHROMA_HOST:-127.0.0.1}? CHROMA_PORT: ${CHROMA_PORT:-8000}? CHROMA_TENANT: ${CHROMA_TENANT:-default_tenant}? CHROMA_DATABASE: ${CHROMA_DATABASE:-default_database}? CHROMA_AUTH_PROVIDER: ${CHROMA_AUTH_PROVIDER:-chromadb.auth.token_authn.TokenAuthClientProvider}? CHROMA_AUTH_CREDENTIALS: ${CHROMA_AUTH_CREDENTIALS:-}? ORACLE_HOST: ${ORACLE_HOST:-oracle}? ORACLE_PORT: ${ORACLE_PORT:-1521}? ORACLE_USER: ${ORACLE_USER:-dify}? ORACLE_PASSWORD: ${ORACLE_PASSWORD:-dify}? ORACLE_DATABASE: ${ORACLE_DATABASE:-FREEPDB1}? RELYT_HOST: ${RELYT_HOST:-db}? RELYT_PORT: ${RELYT_PORT:-5432}? RELYT_USER: ${RELYT_USER:-postgres}? RELYT_PASSWORD: ${RELYT_PASSWORD:-difyai123456}? RELYT_DATABASE: ${RELYT_DATABASE:-postgres}? OPENSEARCH_HOST: ${OPENSEARCH_HOST:-opensearch}? OPENSEARCH_PORT: ${OPENSEARCH_PORT:-9200}? OPENSEARCH_USER: ${OPENSEARCH_USER:-admin}? OPENSEARCH_PASSWORD: ${OPENSEARCH_PASSWORD:-admin}? OPENSEARCH_SECURE: ${OPENSEARCH_SECURE:-true}? TENCENT_VECTOR_DB_URL: ${TENCENT_VECTOR_DB_URL:-http://127.0.0.1}? TENCENT_VECTOR_DB_API_KEY: ${TENCENT_VECTOR_DB_API_KEY:-dify}? TENCENT_VECTOR_DB_TIMEOUT: ${TENCENT_VECTOR_DB_TIMEOUT:-30}? TENCENT_VECTOR_DB_USERNAME: ${TENCENT_VECTOR_DB_USERNAME:-dify}? TENCENT_VECTOR_DB_DATABASE: ${TENCENT_VECTOR_DB_DATABASE:-dify}? TENCENT_VECTOR_DB_SHARD: ${TENCENT_VECTOR_DB_SHARD:-1}? TENCENT_VECTOR_DB_REPLICAS: ${TENCENT_VECTOR_DB_REPLICAS:-2}? ELASTICSEARCH_HOST: ${ELASTICSEARCH_HOST:-0.0.0.0}? ELASTICSEARCH_PORT: ${ELASTICSEARCH_PORT:-9200}? ELASTICSEARCH_USERNAME: ${ELASTICSEARCH_USERNAME:-elastic}? ELASTICSEARCH_PASSWORD: ${ELASTICSEARCH_PASSWORD:-elastic}? KIBANA_PORT: ${KIBANA_PORT:-5601}? BAIDU_VECTOR_DB_ENDPOINT: ${BAIDU_VECTOR_DB_ENDPOINT:-http://127.0.0.1:5287}? BAIDU_VECTOR_DB_CONNECTION_TIMEOUT_MS: ${BAIDU_VECTOR_DB_CONNECTION_TIMEOUT_MS:-30000}? BAIDU_VECTOR_DB_ACCOUNT: ${BAIDU_VECTOR_DB_ACCOUNT:-root}? BAIDU_VECTOR_DB_API_KEY: ${BAIDU_VECTOR_DB_API_KEY:-dify}? BAIDU_VECTOR_DB_DATABASE: ${BAIDU_VECTOR_DB_DATABASE:-dify}? BAIDU_VECTOR_DB_SHARD: ${BAIDU_VECTOR_DB_SHARD:-1}? BAIDU_VECTOR_DB_REPLICAS: ${BAIDU_VECTOR_DB_REPLICAS:-3}? VIKINGDB_ACCESS_KEY: ${VIKINGDB_ACCESS_KEY:-your-ak}? VIKINGDB_SECRET_KEY: ${VIKINGDB_SECRET_KEY:-your-sk}? VIKINGDB_REGION: ${VIKINGDB_REGION:-cn-shanghai}? VIKINGDB_HOST: ${VIKINGDB_HOST:-api-vikingdb.xxx.volces.com}? VIKINGDB_SCHEMA: ${VIKINGDB_SCHEMA:-http}? VIKINGDB_CONNECTION_TIMEOUT: ${VIKINGDB_CONNECTION_TIMEOUT:-30}? VIKINGDB_SOCKET_TIMEOUT: ${VIKINGDB_SOCKET_TIMEOUT:-30}? LINDORM_URL: ${LINDORM_URL:-http://lindorm:30070}? LINDORM_USERNAME: ${LINDORM_USERNAME:-lindorm}? LINDORM_PASSWORD: ${LINDORM_PASSWORD:-lindorm}? OCEANBASE_VECTOR_HOST: ${OCEANBASE_VECTOR_HOST:-oceanbase}? OCEANBASE_VECTOR_PORT: ${OCEANBASE_VECTOR_PORT:-2881}? OCEANBASE_VECTOR_USER: ${OCEANBASE_VECTOR_USER:-root@test}? OCEANBASE_VECTOR_PASSWORD: ${OCEANBASE_VECTOR_PASSWORD:-difyai123456}? OCEANBASE_VECTOR_DATABASE: ${OCEANBASE_VECTOR_DATABASE:-test}? OCEANBASE_CLUSTER_NAME: ${OCEANBASE_CLUSTER_NAME:-difyai}? OCEANBASE_MEMORY_LIMIT: ${OCEANBASE_MEMORY_LIMIT:-6G}? UPSTASH_VECTOR_URL: ${UPSTASH_VECTOR_URL:-https://xxx-vector.upstash.io}? UPSTASH_VECTOR_TOKEN: ${UPSTASH_VECTOR_TOKEN:-dify}? UPLOAD_FILE_SIZE_LIMIT: ${UPLOAD_FILE_SIZE_LIMIT:-15}? UPLOAD_FILE_BATCH_LIMIT: ${UPLOAD_FILE_BATCH_LIMIT:-5}? ETL_TYPE: ${ETL_TYPE:-dify}? UNSTRUCTURED_API_URL: ${UNSTRUCTURED_API_URL:-}? UNSTRUCTURED_API_KEY: ${UNSTRUCTURED_API_KEY:-}? SCARF_NO_ANALYTICS: ${SCARF_NO_ANALYTICS:-true}? PROMPT_GENERATION_MAX_TOKENS: ${PROMPT_GENERATION_MAX_TOKENS:-512}? CODE_GENERATION_MAX_TOKENS: ${CODE_GENERATION_MAX_TOKENS:-1024}? MULTIMODAL_SEND_FORMAT: ${MULTIMODAL_SEND_FORMAT:-base64}? UPLOAD_IMAGE_FILE_SIZE_LIMIT: ${UPLOAD_IMAGE_FILE_SIZE_LIMIT:-10}? UPLOAD_VIDEO_FILE_SIZE_LIMIT: ${UPLOAD_VIDEO_FILE_SIZE_LIMIT:-100}? UPLOAD_AUDIO_FILE_SIZE_LIMIT: ${UPLOAD_AUDIO_FILE_SIZE_LIMIT:-50}? SENTRY_DSN: ${SENTRY_DSN:-}? API_SENTRY_DSN: ${API_SENTRY_DSN:-}? API_SENTRY_TRACES_SAMPLE_RATE: ${API_SENTRY_TRACES_SAMPLE_RATE:-1.0}? API_SENTRY_PROFILES_SAMPLE_RATE: ${API_SENTRY_PROFILES_SAMPLE_RATE:-1.0}? WEB_SENTRY_DSN: ${WEB_SENTRY_DSN:-}? NOTION_INTEGRATION_TYPE: ${NOTION_INTEGRATION_TYPE:-public}? NOTION_CLIENT_SECRET: ${NOTION_CLIENT_SECRET:-}? NOTION_CLIENT_ID: ${NOTION_CLIENT_ID:-}? NOTION_INTERNAL_SECRET: ${NOTION_INTERNAL_SECRET:-}? MAIL_TYPE: ${MAIL_TYPE:-resend}? MAIL_DEFAULT_SEND_FROM: ${MAIL_DEFAULT_SEND_FROM:-}? RESEND_API_URL: ${RESEND_API_URL:-https://api.resend.com}? RESEND_API_KEY: ${RESEND_API_KEY:-your-resend-api-key}? SMTP_SERVER: ${SMTP_SERVER:-}? SMTP_PORT: ${SMTP_PORT:-465}? SMTP_USERNAME: ${SMTP_USERNAME:-}? SMTP_PASSWORD: ${SMTP_PASSWORD:-}? SMTP_USE_TLS: ${SMTP_USE_TLS:-true}? SMTP_OPPORTUNISTIC_TLS: ${SMTP_OPPORTUNISTIC_TLS:-false}? INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH: ${INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH:-4000}? INVITE_EXPIRY_HOURS: ${INVITE_EXPIRY_HOURS:-72}? RESET_PASSWORD_TOKEN_EXPIRY_MINUTES: ${RESET_PASSWORD_TOKEN_EXPIRY_MINUTES:-5}? CODE_EXECUTION_ENDPOINT: ${CODE_EXECUTION_ENDPOINT:-http://sandbox:8194}? CODE_EXECUTION_API_KEY: ${CODE_EXECUTION_API_KEY:-dify-sandbox}? CODE_MAX_NUMBER: ${CODE_MAX_NUMBER:-9223372036854775807}? CODE_MIN_NUMBER: ${CODE_MIN_NUMBER:--9223372036854775808}? CODE_MAX_DEPTH: ${CODE_MAX_DEPTH:-5}? CODE_MAX_PRECISION: ${CODE_MAX_PRECISION:-20}? CODE_MAX_STRING_LENGTH: ${CODE_MAX_STRING_LENGTH:-80000}? CODE_MAX_STRING_ARRAY_LENGTH: ${CODE_MAX_STRING_ARRAY_LENGTH:-30}? CODE_MAX_OBJECT_ARRAY_LENGTH: ${CODE_MAX_OBJECT_ARRAY_LENGTH:-30}? CODE_MAX_NUMBER_ARRAY_LENGTH: ${CODE_MAX_NUMBER_ARRAY_LENGTH:-1000}? CODE_EXECUTION_CONNECT_TIMEOUT: ${CODE_EXECUTION_CONNECT_TIMEOUT:-10}? CODE_EXECUTION_READ_TIMEOUT: ${CODE_EXECUTION_READ_TIMEOUT:-60}? CODE_EXECUTION_WRITE_TIMEOUT: ${CODE_EXECUTION_WRITE_TIMEOUT:-10}? TEMPLATE_TRANSFORM_MAX_LENGTH: ${TEMPLATE_TRANSFORM_MAX_LENGTH:-80000}? WORKFLOW_MAX_EXECUTION_STEPS: ${WORKFLOW_MAX_EXECUTION_STEPS:-500}? WORKFLOW_MAX_EXECUTION_TIME: ${WORKFLOW_MAX_EXECUTION_TIME:-1200}? WORKFLOW_CALL_MAX_DEPTH: ${WORKFLOW_CALL_MAX_DEPTH:-5}? MAX_VARIABLE_SIZE: ${MAX_VARIABLE_SIZE:-204800}? WORKFLOW_PARALLEL_DEPTH_LIMIT: ${WORKFLOW_PARALLEL_DEPTH_LIMIT:-3}? WORKFLOW_FILE_UPLOAD_LIMIT: ${WORKFLOW_FILE_UPLOAD_LIMIT:-10}? HTTP_REQUEST_NODE_MAX_BINARY_SIZE: ${HTTP_REQUEST_NODE_MAX_BINARY_SIZE:-10485760}? HTTP_REQUEST_NODE_MAX_TEXT_SIZE: ${HTTP_REQUEST_NODE_MAX_TEXT_SIZE:-1048576}? SSRF_PROXY_HTTP_URL: ${SSRF_PROXY_HTTP_URL:-http://ssrf_proxy:3128}? SSRF_PROXY_HTTPS_URL: ${SSRF_PROXY_HTTPS_URL:-http://ssrf_proxy:3128}? TEXT_GENERATION_TIMEOUT_MS: ${TEXT_GENERATION_TIMEOUT_MS:-60000}? PGUSER: ${PGUSER:-${DB_USERNAME}}? POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-${DB_PASSWORD}}? POSTGRES_DB: ${POSTGRES_DB:-${DB_DATABASE}}? PGDATA: ${PGDATA:-/var/lib/postgresql/data/pgdata}? SANDBOX_API_KEY: ${SANDBOX_API_KEY:-dify-sandbox}? SANDBOX_GIN_MODE: ${SANDBOX_GIN_MODE:-release}? SANDBOX_WORKER_TIMEOUT: ${SANDBOX_WORKER_TIMEOUT:-15}? SANDBOX_ENABLE_NETWORK: ${SANDBOX_ENABLE_NETWORK:-true}? SANDBOX_HTTP_PROXY: ${SANDBOX_HTTP_PROXY:-http://ssrf_proxy:3128}? SANDBOX_HTTPS_PROXY: ${SANDBOX_HTTPS_PROXY:-http://ssrf_proxy:3128}? SANDBOX_PORT: ${SANDBOX_PORT:-8194}? WEAVIATE_PERSISTENCE_DATA_PATH: ${WEAVIATE_PERSISTENCE_DATA_PATH:-/var/lib/weaviate}? WEAVIATE_QUERY_DEFAULTS_LIMIT: ${WEAVIATE_QUERY_DEFAULTS_LIMIT:-25}? WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: ${WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED:-true}? WEAVIATE_DEFAULT_VECTORIZER_MODULE: ${WEAVIATE_DEFAULT_VECTORIZER_MODULE:-none}? WEAVIATE_CLUSTER_HOSTNAME: ${WEAVIATE_CLUSTER_HOSTNAME:-node1}? WEAVIATE_AUTHENTICATION_APIKEY_ENABLED: ${WEAVIATE_AUTHENTICATION_APIKEY_ENABLED:-true}? WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS: ${WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS:-WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih}? WEAVIATE_AUTHENTICATION_APIKEY_USERS: ${WEAVIATE_AUTHENTICATION_APIKEY_USERS:-hello@dify.ai}? WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED: ${WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED:-true}? WEAVIATE_AUTHORIZATION_ADMINLIST_USERS: ${WEAVIATE_AUTHORIZATION_ADMINLIST_USERS:-hello@dify.ai}? CHROMA_SERVER_AUTHN_CREDENTIALS: ${CHROMA_SERVER_AUTHN_CREDENTIALS:-difyai123456}? CHROMA_SERVER_AUTHN_PROVIDER: ${CHROMA_SERVER_AUTHN_PROVIDER:-chromadb.auth.token_authn.TokenAuthenticationServerProvider}? CHROMA_IS_PERSISTENT: ${CHROMA_IS_PERSISTENT:-TRUE}? ORACLE_PWD: ${ORACLE_PWD:-Dify123456}? ORACLE_CHARACTERSET: ${ORACLE_CHARACTERSET:-AL32UTF8}? 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}? MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin}? MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin}? ETCD_ENDPOINTS: ${ETCD_ENDPOINTS:-etcd:2379}? MINIO_ADDRESS: ${MINIO_ADDRESS:-minio:9000}? MILVUS_AUTHORIZATION_ENABLED: ${MILVUS_AUTHORIZATION_ENABLED:-true}? PGVECTOR_PGUSER: ${PGVECTOR_PGUSER:-postgres}? PGVECTOR_POSTGRES_PASSWORD: ${PGVECTOR_POSTGRES_PASSWORD:-difyai123456}? PGVECTOR_POSTGRES_DB: ${PGVECTOR_POSTGRES_DB:-dify}? PGVECTOR_PGDATA: ${PGVECTOR_PGDATA:-/var/lib/postgresql/data/pgdata}? OPENSEARCH_DISCOVERY_TYPE: ${OPENSEARCH_DISCOVERY_TYPE:-single-node}? OPENSEARCH_BOOTSTRAP_MEMORY_LOCK: ${OPENSEARCH_BOOTSTRAP_MEMORY_LOCK:-true}? OPENSEARCH_JAVA_OPTS_MIN: ${OPENSEARCH_JAVA_OPTS_MIN:-512m}? OPENSEARCH_JAVA_OPTS_MAX: ${OPENSEARCH_JAVA_OPTS_MAX:-1024m}? OPENSEARCH_INITIAL_ADMIN_PASSWORD: ${OPENSEARCH_INITIAL_ADMIN_PASSWORD:-Qazwsxedc!@#123}? OPENSEARCH_MEMLOCK_SOFT: ${OPENSEARCH_MEMLOCK_SOFT:--1}? OPENSEARCH_MEMLOCK_HARD: ${OPENSEARCH_MEMLOCK_HARD:--1}? OPENSEARCH_NOFILE_SOFT: ${OPENSEARCH_NOFILE_SOFT:-65536}? OPENSEARCH_NOFILE_HARD: ${OPENSEARCH_NOFILE_HARD:-65536}? NGINX_SERVER_NAME: ${NGINX_SERVER_NAME:-_}? NGINX_HTTPS_ENABLED: ${NGINX_HTTPS_ENABLED:-false}? NGINX_PORT: ${NGINX_PORT:-80}? NGINX_SSL_PORT: ${NGINX_SSL_PORT:-443}? 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_EMAIL: ${CERTBOT_EMAIL:-your_email@example.com}? CERTBOT_DOMAIN: ${CERTBOT_DOMAIN:-your_domain.com}? CERTBOT_OPTIONS: ${CERTBOT_OPTIONS:-}? SSRF_HTTP_PORT: ${SSRF_HTTP_PORT:-3128}? SSRF_COREDUMP_DIR: ${SSRF_COREDUMP_DIR:-/var/spool/squid}? SSRF_REVERSE_PROXY_PORT: ${SSRF_REVERSE_PROXY_PORT:-8194}? SSRF_SANDBOX_HOST: ${SSRF_SANDBOX_HOST:-sandbox}? SSRF_DEFAULT_TIME_OUT: ${SSRF_DEFAULT_TIME_OUT:-5}? SSRF_DEFAULT_CONNECT_TIME_OUT: ${SSRF_DEFAULT_CONNECT_TIME_OUT:-5}? SSRF_DEFAULT_READ_TIME_OUT: ${SSRF_DEFAULT_READ_TIME_OUT:-5}? SSRF_DEFAULT_WRITE_TIME_OUT: ${SSRF_DEFAULT_WRITE_TIME_OUT:-5}? EXPOSE_NGINX_PORT: ${EXPOSE_NGINX_PORT:-80}? EXPOSE_NGINX_SSL_PORT: ${EXPOSE_NGINX_SSL_PORT:-443}? POSITION_TOOL_PINS: ${POSITION_TOOL_PINS:-}? POSITION_TOOL_INCLUDES: ${POSITION_TOOL_INCLUDES:-}? POSITION_TOOL_EXCLUDES: ${POSITION_TOOL_EXCLUDES:-}? POSITION_PROVIDER_PINS: ${POSITION_PROVIDER_PINS:-}? POSITION_PROVIDER_INCLUDES: ${POSITION_PROVIDER_INCLUDES:-}? POSITION_PROVIDER_EXCLUDES: ${POSITION_PROVIDER_EXCLUDES:-}? CSP_WHITELIST: ${CSP_WHITELIST:-}? CREATE_TIDB_SERVICE_JOB_ENABLED: ${CREATE_TIDB_SERVICE_JOB_ENABLED:-false}? MAX_SUBMIT_COUNT: ${MAX_SUBMIT_COUNT:-100}? TOP_K_MAX_VALUE: ${TOP_K_MAX_VALUE:-10}? DB_PLUGIN_DATABASE: ${DB_PLUGIN_DATABASE:-dify_plugin}? EXPOSE_PLUGIN_DAEMON_PORT: ${EXPOSE_PLUGIN_DAEMON_PORT:-5002}? PLUGIN_DAEMON_PORT: ${PLUGIN_DAEMON_PORT:-5002}? PLUGIN_DAEMON_KEY: ${PLUGIN_DAEMON_KEY:-lYkiYYT6owG+71oLerGzA7GXCgOT++6ovaezWAjpCjf+Sjc3ZtU+qUEi}? PLUGIN_DAEMON_URL: ${PLUGIN_DAEMON_URL:-http://plugin_daemon:5002}? PLUGIN_MAX_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800}? PLUGIN_PPROF_ENABLED: ${PLUGIN_PPROF_ENABLED:-false}? PLUGIN_DEBUGGING_HOST: ${PLUGIN_DEBUGGING_HOST:-0.0.0.0}? PLUGIN_DEBUGGING_PORT: ${PLUGIN_DEBUGGING_PORT:-5003}? EXPOSE_PLUGIN_DEBUGGING_HOST: ${EXPOSE_PLUGIN_DEBUGGING_HOST:-localhost}? EXPOSE_PLUGIN_DEBUGGING_PORT: ${EXPOSE_PLUGIN_DEBUGGING_PORT:-5003}? PLUGIN_DIFY_INNER_API_KEY: ${PLUGIN_DIFY_INNER_API_KEY:-QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1}? PLUGIN_DIFY_INNER_API_URL: ${PLUGIN_DIFY_INNER_API_URL:-http://api:5001}? ENDPOINT_URL_TEMPLATE: ${ENDPOINT_URL_TEMPLATE:-http://localhost/e/{hook_id}}? MARKETPLACE_ENABLED: ${MARKETPLACE_ENABLED:-true}? MARKETPLACE_API_URL: ${MARKETPLACE_API_URL:-https://marketplace.dify.ai}? FORCE_VERIFYING_SIGNATURE: ${FORCE_VERIFYING_SIGNATURE:-true}services:? # API service? api:? ? image: docker.1ms.run/langgenius/dify-api:latest? ? restart: always? ? environment:? ? ? # Use the shared environment variables.? ? ? <<: *shared-api-worker-env? ? ? # Startup mode, 'api' starts the API server.? ? ? 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}? ? ? PLUGIN_MAX_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800}? ? ? INNER_API_KEY_FOR_PLUGIN: ${PLUGIN_DIFY_INNER_API_KEY:-QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1}? ? depends_on:? ? ? - db? ? ? - redis? ? volumes:? ? ? # Mount the storage directory to the container, for storing user files.? ? ? - ./volumes/app/storage:/app/api/storage? ? networks:? ? ? - ssrf_proxy_network? ? ? - default? # worker service? # The Celery worker for processing the queue.? worker:? ? image: docker.1ms.run/langgenius/dify-api:latest? ? restart: always? ? environment:? ? ? # Use the shared environment variables.? ? ? <<: *shared-api-worker-env? ? ? # Startup mode, 'worker' starts the Celery worker for processing the queue.? ? ? 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}? ? ? PLUGIN_MAX_PACKAGE_SIZE: ${PLUGIN_MAX_PACKAGE_SIZE:-52428800}? ? ? INNER_API_KEY_FOR_PLUGIN: ${PLUGIN_DIFY_INNER_API_KEY:-QaHbTe77CtuXmsfyhR7+vRjI/+XbV1AaFy691iy+kGDv2Jvy0/eAh8Y1}? ? depends_on:? ? ? - db? ? ? - redis? ? volumes:? ? ? # Mount the storage directory to the container, for storing user files.? ? ? - ./volumes/app/storage:/app/api/storage? ? networks:? ? ? - ssrf_proxy_network? ? ? - default? # Frontend web application.? web:? ? image: docker.1ms.run/langgenius/dify-web:latest? ? restart: always? ? 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:-}? ? ? MARKETPLACE_API_URL: ${MARKETPLACE_API_URL:-https://marketplace.dify.ai}? ? ? MARKETPLACE_URL: ${MARKETPLACE_URL:-https://marketplace.dify.ai}? ? ? TOP_K_MAX_VALUE: ${TOP_K_MAX_VALUE:-}? ? ? INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH: ${INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH:-}? # The postgres database.? db:? ? image: docker.1ms.run/library/postgres:15-alpine? ? restart: always? ? 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:? ? ? - ./volumes/db/data:/var/lib/postgresql/data? ? healthcheck:? ? ? test: [ 'CMD', 'pg_isready' ]? ? ? interval: 1s? ? ? timeout: 3s? ? ? retries: 30? ? ports:? ? ? - '${EXPOSE_DB_PORT:-5432}:5432'? # The redis cache.? redis:? ? image: docker.1ms.run/library/redis:6-alpine? ? restart: always? ? environment:? ? ? REDISCLI_AUTH: ${REDIS_PASSWORD:-difyai123456}? ? volumes:? ? ? # Mount the redis data directory to the container.? ? ? - ./volumes/redis/data:/data? ? # Set the redis password when startup redis server.? ? command: redis-server --requirepass ${REDIS_PASSWORD:-difyai123456}? ? healthcheck:? ? ? test: [ 'CMD', 'redis-cli', 'ping' ]? # The DifySandbox? sandbox:? ? image: docker.1ms.run/langgenius/dify-sandbox:0.2.10? ? restart: always? ? environment:? ? ? # The DifySandbox configurations? ? ? # Make sure you are changing this key for your deployment with a strong key.? ? ? # You can generate a strong key using `openssl rand -base64 42`.? ? ? 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:? ? ? - ./volumes/sandbox/dependencies:/dependencies? ? healthcheck:? ? ? test: [ 'CMD', 'curl', '-f', 'http://localhost:8194/health' ]? ? networks:? ? ? - ssrf_proxy_network? # plugin daemon? plugin_daemon:? ? image: docker.1ms.run/langgenius/dify-plugin-daemon:0.0.1-local? ? restart: always? ? environment:? ? ? # Use the shared environment variables.? ? ? <<: *shared-api-worker-env? ? ? 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:? ? ? - ./volumes/plugin_daemon:/app/storage? # ssrf_proxy server? # for more information, please refer to? # https://docs.dify.ai/learn-more/faq/install-faq#id-18.-why-is-ssrf_proxy-needed? ssrf_proxy:? ? image: docker.1ms.run/ubuntu/squid:latest? ? restart: always? ? volumes:? ? ? - ./ssrf_proxy/squid.conf.template:/etc/squid/squid.conf.template? ? ? - ./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:? ? ? # pls clearly modify the squid env vars to fit your network 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 service? # use `docker-compose --profile certbot up` to start the certbot service.? certbot:? ? image: docker.1ms.run/certbot/certbot? ? profiles:? ? ? - certbot? ? volumes:? ? ? - ./volumes/certbot/conf:/etc/letsencrypt? ? ? - ./volumes/certbot/www:/var/www/html? ? ? - ./volumes/certbot/logs:/var/log/letsencrypt? ? ? - ./volumes/certbot/conf/live:/etc/letsencrypt/live? ? ? - ./certbot/update-cert.template.txt:/update-cert.template.txt? ? ? - ./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' ]? # The nginx reverse proxy.? # used for reverse proxying the API service and Web service.? nginx:? ? image: docker.1ms.run/library/nginx:latest? ? restart: always? ? volumes:? ? ? - ./nginx/nginx.conf.template:/etc/nginx/nginx.conf.template? ? ? - ./nginx/proxy.conf.template:/etc/nginx/proxy.conf.template? ? ? - ./nginx/https.conf.template:/etc/nginx/https.conf.template? ? ? - ./nginx/conf.d:/etc/nginx/conf.d? ? ? - ./nginx/docker-entrypoint.sh:/docker-entrypoint-mount.sh? ? ? - ./nginx/ssl:/etc/ssl # cert dir (legacy)? ? ? - ./volumes/certbot/conf/live:/etc/letsencrypt/live # cert dir (with certbot container)? ? ? - ./volumes/certbot/conf:/etc/letsencrypt? ? ? - ./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}? ? ? # You're required to add your own SSL certificates/keys to the `./nginx/ssl` directory? ? ? # and modify the env vars below in .env if HTTPS_ENABLED is true.? ? ? 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:? ? ? - '${EXPOSE_NGINX_PORT:-80}:${NGINX_PORT:-80}'? ? ? - '${EXPOSE_NGINX_SSL_PORT:-443}:${NGINX_SSL_PORT:-443}'? # The Weaviate vector store.? weaviate:? ? image: docker.1ms.run/semitechnologies/weaviate:1.19.0? ? profiles:? ? ? - ''? ? ? - weaviate? ? restart: always? ? volumes:? ? ? # Mount the Weaviate data directory to the con tainer.? ? ? - ./volumes/weaviate:/var/lib/weaviate? ? environment:? ? ? # The Weaviate configurations? ? ? # You can refer to the [Weaviate](https://weaviate.io/developers/weaviate/config-refs/env-vars) documentation for more information.? ? ? 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 vector store.? # (if used, you need to set VECTOR_STORE to qdrant in the api & worker service.)? qdrant:? ? image: docker.1ms.run/langgenius/qdrant:v1.7.3? ? profiles:? ? ? - qdrant? ? restart: always? ? volumes:? ? ? - ./volumes/qdrant:/qdrant/storage? ? environment:? ? ? QDRANT_API_KEY: ${QDRANT_API_KEY:-difyai123456}? # The Couchbase vector store.? couchbase-server:? ? build: ./couchbase-server? ? profiles:? ? ? - couchbase? ? restart: always? ? 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? ? container_name: couchbase-server? ? working_dir: /opt/couchbase? ? stdin_open: true? ? tty: true? ? entrypoint: [ "" ]? ? command: sh -c "/opt/couchbase/init/init-cbserver.sh"? ? volumes:? ? ? - ./volumes/couchbase/data:/opt/couchbase/var/lib/couchbase/data? ? healthcheck:? ? ? # ensure bucket was created before proceeding? ? ? 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? # The pgvector vector database.? pgvector:? ? image: docker.1ms.run/pgvector/pgvector:pg16? ? profiles:? ? ? - pgvector? ? restart: always? ? environment:? ? ? PGUSER: ${PGVECTOR_PGUSER:-postgres}? ? ? # The password for the default postgres user.? ? ? POSTGRES_PASSWORD: ${PGVECTOR_POSTGRES_PASSWORD:-difyai123456}? ? ? # The name of the default postgres database.? ? ? POSTGRES_DB: ${PGVECTOR_POSTGRES_DB:-dify}? ? ? # postgres data directory? ? ? PGDATA: ${PGVECTOR_PGDATA:-/var/lib/postgresql/data/pgdata}? ? volumes:? ? ? - ./volumes/pgvector/data:/var/lib/postgresql/data? ? healthcheck:? ? ? test: [ 'CMD', 'pg_isready' ]? ? ? interval: 1s? ? ? timeout: 3s? ? ? retries: 30? # pgvecto-rs vector store? pgvecto-rs:? ? image: docker.1ms.run/tensorchord/pgvecto-rs:pg16-v0.3.0? ? profiles:? ? ? - pgvecto-rs? ? restart: always? ? environment:? ? ? PGUSER: ${PGVECTOR_PGUSER:-postgres}? ? ? # The password for the default postgres user.? ? ? POSTGRES_PASSWORD: ${PGVECTOR_POSTGRES_PASSWORD:-difyai123456}? ? ? # The name of the default postgres database.? ? ? POSTGRES_DB: ${PGVECTOR_POSTGRES_DB:-dify}? ? ? # postgres data directory? ? ? PGDATA: ${PGVECTOR_PGDATA:-/var/lib/postgresql/data/pgdata}? ? volumes:? ? ? - ./volumes/pgvecto_rs/data:/var/lib/postgresql/data? ? healthcheck:? ? ? test: [ 'CMD', 'pg_isready' ]? ? ? interval: 1s? ? ? timeout: 3s? ? ? retries: 30? # Chroma vector database? chroma:? ? image: ghcr.io/chroma-core/chroma:0.5.20? ? profiles:? ? ? - chroma? ? restart: always? ? volumes:? ? ? - ./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 vector database? oceanbase:? ? image: quay.io/oceanbase/oceanbase-ce:4.3.3.0-100000142024101215? ? profiles:? ? ? - oceanbase? ? restart: always? ? volumes:? ? ? - ./volumes/oceanbase/data:/root/ob? ? ? - ./volumes/oceanbase/conf:/root/.obd/cluster? ? ? - ./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 vector database? oracle:? ? image: container-registry.oracle.com/database/free:latest? ? profiles:? ? ? - oracle? ? restart: always? ? volumes:? ? ? - source: oradata? ? ? ? type: volume? ? ? ? target: /opt/oracle/oradata? ? ? - ./startupscripts:/opt/oracle/scripts/startup? ? environment:? ? ? ORACLE_PWD: ${ORACLE_PWD:-Dify123456}? ? ? ORACLE_CHARACTERSET: ${ORACLE_CHARACTERSET:-AL32UTF8}? # Milvus vector database services? etcd:? ? container_name: milvus-etcd? ? image: quay.io/coreos/etcd:v3.5.5? ? 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:? ? ? - ./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:? ? container_name: milvus-minio? ? image: docker.1ms.run/minio/minio:RELEASE.2023-03-20T20-16-18Z? ? profiles:? ? ? - milvus? ? environment:? ? ? MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin}? ? ? MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-minioadmin}? ? volumes:? ? ? - ./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:? ? container_name: milvus-standalone? ? image: docker.1ms.run/milvusdb/milvus:v2.5.0-beta? ? 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:? ? ? - ./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 vector database? opensearch:? ? container_name: opensearch? ? image: docker.1ms.run/opensearchproject/opensearch:latest? ? 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:? ? ? - ./volumes/opensearch/data:/usr/share/opensearch/data? ? networks:? ? ? - opensearch-net? opensearch-dashboards:? ? container_name: opensearch-dashboards? ? image: opensearchproject/opensearch-dashboards:latest? ? profiles:? ? ? - opensearch? ? environment:? ? ? OPENSEARCH_HOSTS: '["https://opensearch:9200"]'? ? volumes:? ? ? - ./volumes/opensearch/opensearch_dashboards.yml:/usr/share/opensearch-dashboards/config/opensearch_dashboards.yml? ? networks:? ? ? - opensearch-net? ? depends_on:? ? ? - opensearch? # MyScale vector database? myscale:? ? container_name: myscale? ? image: myscale/myscaledb:1.6.4? ? profiles:? ? ? - myscale? ? restart: always? ? tty: true? ? volumes:? ? ? - ./volumes/myscale/data:/var/lib/clickhouse? ? ? - ./volumes/myscale/log:/var/log/clickhouse-server? ? ? - ./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}? # https://www.elastic.co/guide/en/elasticsearch/reference/current/settings.html? # https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-prod-prerequisites? elasticsearch:? ? image: docker.elastic.co/elasticsearch/elasticsearch:8.14.3? ? container_name: elasticsearch? ? profiles:? ? ? - elasticsearch? ? ? - elasticsearch-ja? ? restart: always? ? volumes:? ? ? - ./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? # https://www.elastic.co/guide/en/kibana/current/docker.html? # https://www.elastic.co/guide/en/kibana/current/settings.html? kibana:? ? image: docker.elastic.co/kibana/kibana:8.14.3? ? container_name: kibana? ? profiles:? ? ? - elasticsearch? ? depends_on:? ? ? - elasticsearch? ? restart: always? ? 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 .? # (if used, you need to set ETL_TYPE to Unstructured in the api & worker service.)? unstructured:? ? image: downloads.unstructured.io/unstructured-io/unstructured-api:latest? ? profiles:? ? ? - unstructured? ? restart: always? ? volumes:? ? ? - ./volumes/unstructured:/app/datanetworks:? # create a network between sandbox, api and ssrf_proxy, and can not access outside.? ssrf_proxy_network:? ? driver: bridge? ? internal: true? milvus:? ? driver: bridge? opensearch-net:? ? driver: bridge? ? internal: truevolumes:? oradata:? dify_es01_data:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/71538.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/71538.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/71538.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

開源工具推薦--思維導圖、流程圖等繪制

1. 前言 在工作中&#xff0c;經常要用到各種不同的工具&#xff0c;隨著系統的升級&#xff0c;有些工具也在不斷更新升級。這里收集整理一些好用的開源工具推薦&#xff0c;遵循以下一些基本原則&#xff1a;開源免費&#xff0c;商業工具的有效平替&#xff0c;輕量級&…

Ubuntu 下 nginx-1.24.0 源碼分析 - ngx_create_pool函數

ngx_create_pool 聲明在 src\core\ngx_palloc.h 中 ngx_pool_t *ngx_create_pool(size_t size, ngx_log_t *log); 實現在 src\core\ngx_palloc.c 中 ngx_pool_t * ngx_create_pool(size_t size, ngx_log_t *log) {ngx_pool_t *p;p ngx_memalign(NGX_POOL_ALIGNMENT, size, lo…

ac的dhcp池里option43配錯導致ap無法上線問題排查過程

dhcp池里ac地址配錯&#xff0c;導致ap無法上線問題排查過程 問題&#xff1a;ap手動設置ac的ip正常注冊在線&#xff0c;但dhcp獲得ip和ac地址發現無法在ac上注冊成功。 組網&#xff1a; ac旁路結構&#xff0c;路由器lan口地址172.16.1.1&#xff0c;開dhcp服務&#xff0…

IntelliJ IDEA中Maven配置全指南

一、環境準備與基礎配置 1.1 Windows 環境下載并配置 Maven 見此篇博文&#xff1a;環境配置 1.2 IDEA配置步驟 打開設置面板&#xff1a;File → Settings → Build → Build Tools → Maven 關鍵配置項&#xff1a; Maven home path E:\apache-maven-3.9.9 &#xff08;…

存儲區域網絡(SAN)管理

存儲區域網絡&#xff08;Storage Area Network&#xff0c;SAN&#xff09;采用網狀通道&#xff08;Fibre Channel &#xff0c;簡稱FC&#xff09;技術&#xff0c;通過FC交換機連接存儲陣列和服務器主機&#xff0c;建立專用于數據存儲的區域網絡。SAN提供了一種與現有LAN連…

使用vue-office報錯TypeError: ft.createElementVNode is not a function

支持多種文件(.docx、.xlsx、.xls、.pdf、.pptx)預覽的vue組件庫&#xff0c;支持vue2/3。也支持非Vue框架的預覽。 不支持.doc、.ppt&#xff08;2003年及以前的版本&#xff09; 官網&#xff1a;https://www.npmjs.com/package/vue-office/excel?activeTabreadme 官方有實…

Ubuntu部署ktransformers

準備工作 一臺服務器 CPU&#xff1a;500G GPU&#xff1a;48G&#xff08;NVIDIA4090&#xff09; 系統&#xff1a;Ubuntu20.04&#xff08;github的文檔好像用的是22.04&#xff09; 第一步&#xff1a;下載權重文件 1.下載hfd wget https://hf-mirror.com/hfd/hfd.s…

C++初階——簡單實現vector

目錄 1、前言 2、Vector.h 3、Test.cpp 1、前言 簡單實現std::vector類模板。 相較于前面的string&#xff0c;vector要注意&#xff1a; 深拷貝&#xff0c;因為vector的元素可能是類類型&#xff0c;類類型元素可以通過賦值重載&#xff0c;自己實現深拷貝。 迭代器失效…

全志A133 android10 適配SLM770A 4G模塊

一&#xff0c;模塊基本信息 1.官方介紹 SLM770A是美格智能最新推出的一款LTE Cat.4無線通訊模組&#xff0c;最大支持下行速率150Mbps及上行速率50Mbps。同時向下兼容現有的3G和2G網絡&#xff0c;以確保即使在偏遠地區也可以進行網絡通信。 SLM770A模組支持分集接收和MIMO技…

微信小程序:多菜單欄設計效果

一、實現效果 二、代碼 wxml 編輯前端界面,步驟 菜單邏輯: 逐步取出數組中的項,首先取出頂部菜單項,然后選中后取出選中的底部數據(左側菜單+右側內容),然后點擊左側菜單取出選中的左側菜單對應的右側內容 ①這里我的數據是全部封裝到一個數組對象的,首先我的循環…

C++基礎知識學習記錄—string類

string實際上是C內置的一個類&#xff0c;內部對char *進行了封裝&#xff0c;不用擔心數組越界問題&#xff0c;string類中&#xff0c;除了上課講解的函數外&#xff0c;還有很多函數可以使用&#xff0c;可以自行查閱文檔。 構造函數原型&#xff1a; string(); //創建一個…

Ollama+DeepSeek+Open-WebUi

環境準備 Docker Ollama Open-WebUi Ollama 下載地址&#xff1a;Ollama docker安裝ollama docker run -d \ -v /data/ollama/data:/root/.ollama \ -p 11434:11434 \ --name ollama ollama/ollama 下載模型 Ollama模型倉庫 # 示例&#xff1a;安裝deepseek-r1:7b doc…

設計模式--訪問者模式【行為型模式】

設計模式的分類 我們都知道有 23 種設計模式&#xff0c;這 23 種設計模式可分為如下三類&#xff1a; 創建型模式&#xff08;5 種&#xff09;&#xff1a;單例模式、工廠方法模式、抽象工廠模式、建造者模式、原型模式。結構型模式&#xff08;7 種&#xff09;&#xff1…

前端循環全解析:JS/ES/TS 循環寫法與實戰示例

循環是編程中控制流程的核心工具。本文將詳細介紹 JavaScript、ES6 及 TypeScript 中各種循環的寫法、特性&#xff0c;并通過實際示例幫助你掌握它們的正確使用姿勢。 目錄 傳統三劍客 for 循環 while 循環 do...while 循環 ES6 新特性 forEach for...of for...in 數組…

數據中心儲能蓄電池狀態監測管理系統 組成架構介紹

安科瑞劉鴻鵬 摘要 隨著數據中心對供電可靠性要求的提高&#xff0c;蓄電池儲能系統成為關鍵的后備電源。本文探討了蓄電池監測系統在數據中心儲能系統中的重要性&#xff0c;分析了ABAT系列蓄電池在線監測系統的功能、技術特點及其應用優勢。通過蓄電池監測系統的實施&#…

Mac端homebrew安裝配置

拷打了一下午o3-mini-high&#xff0c;不如這位博主的超強帖子&#xff0c;10分鐘結束戰斗 跟隨該文章即可&#xff0c;2025/2/19親測可行 mac 安裝HomeBrew(100%成功)_mac安裝homebrew-CSDN博客文章瀏覽閱讀10w次&#xff0c;點贊258次&#xff0c;收藏837次。一直覺得自己寫…

機器學習實戰(8):降維技術——主成分分析(PCA)

第8集&#xff1a;降維技術——主成分分析&#xff08;PCA&#xff09; 在機器學習中&#xff0c;降維&#xff08;Dimensionality Reduction&#xff09; 是一種重要的數據處理技術&#xff0c;用于減少特征維度、去除噪聲并提高模型效率。主成分分析&#xff08;Principal C…

windows環境下用docker搭建php開發環境dnmp

安裝WSL WSL即Linux子系統&#xff0c;比虛擬機占用資源少&#xff0c;安裝的前提是系統必須是win10以上。 WSL的安裝比較簡單&#xff0c;網上有很多教程&#xff0c;例如&#xff1a;WSL簡介與安裝流程&#xff08;Windows 下的 Linux 子系統&#xff09;_wsl安裝-CSDN博客&…

Python網絡爬蟲技術詳解文檔

Python網絡爬蟲技術詳解文檔 目錄 網絡爬蟲概述爬蟲核心技術解析常用Python爬蟲庫實戰案例演示反爬蟲機制與應對策略爬蟲法律與道德規范高級爬蟲技術資源推薦與學習路徑1. 網絡爬蟲概述 1.1 什么是網絡爬蟲 網絡爬蟲(Web Crawler)是一種按特定規則自動抓取互聯網信息的程序…

位運算,雙指針,二分,排序算法

文章目錄 位運算二進制中1的個數題解代碼我們需要0題解代碼 排序模版排序1題解代碼模版排序2題解代碼模版排序3題解代碼 雙指針最長連續不重復子序列題解代碼 二分查找題解代碼 位運算 1. bitset< 16 >將十進制數轉為16位的二進制數 int x 25; cout << bitset<…