Dify 适用于 Windows WSL 的 docker compose 配置
2024-06-21
Docker Compose配置文件定义了适用于Windows WSL的Dify应用,包括API、Worker、Web、数据库、缓存、向量存储、代理和反向代理等多个服务的设置。
version: '3' services: api: image: langgenius/dify-api:0.6.11 restart: always environment: MODE: api LOG_LEVEL: INFO SECRET_KEY: sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U CONSOLE_WEB_URL: '' INIT_PASSWORD: '' CONSOLE_API_URL: '' SERVICE_API_URL: '' APP_WEB_URL: '' FILES_URL: '' FILES_ACCESS_TIMEOUT: 300 MIGRATION_ENABLED: 'true' DB_USERNAME: postgres DB_PASSWORD: difyai123456 DB_HOST: db DB_PORT: 5432 DB_DATABASE: dify REDIS_HOST: redis REDIS_PORT: 6379 REDIS_USERNAME: '' REDIS_PASSWORD: difyai123456 REDIS_USE_SSL: 'false' REDIS_DB: 0 CELERY_BROKER_URL: redis://:difyai123456@redis:6379/1 WEB_API_CORS_ALLOW_ORIGINS: '*' CONSOLE_CORS_ALLOW_ORIGINS: '*' STORAGE_TYPE: local STORAGE_LOCAL_PATH: storage VECTOR_STORE: weaviate WEAVIATE_ENDPOINT: http://weaviate:8080 WEAVIATE_API_KEY: WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih depends_on: - db - redis volumes: - ./volumes/app/storage:/app/api/storage networks: - ssrf_proxy_network - default worker: image: langgenius/dify-api:0.6.11 restart: always environment: MODE: worker LOG_LEVEL: INFO SECRET_KEY: sk-9f73s3ljTXVcMT3Blb3ljTqtsKiGHXVcMT3BlbkFJLK7U DB_USERNAME: postgres DB_PASSWORD: difyai123456 DB_HOST: db DB_PORT: 5432 DB_DATABASE: dify REDIS_HOST: redis REDIS_PORT: 6379 REDIS_USERNAME: '' REDIS_PASSWORD: difyai123456 REDIS_DB: 0 REDIS_USE_SSL: 'false' CELERY_BROKER_URL: redis://:difyai123456@redis:6379/1 STORAGE_TYPE: local STORAGE_LOCAL_PATH: storage VECTOR_STORE: weaviate WEAVIATE_ENDPOINT: http://weaviate:8080 WEAVIATE_API_KEY: WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih depends_on: - db - redis volumes: - ./volumes/app/storage:/app/api/storage networks: - ssrf_proxy_network - default web: image: langgenius/dify-web:0.6.11 restart: always environment: CONSOLE_API_URL: '' APP_API_URL: '' SENTRY_DSN: '' depends_on: - api networks: - default db: image: postgres:15-alpine restart: always environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: difyai123456 POSTGRES_DB: dify volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 networks: - default redis: image: redis:6-alpine restart: always volumes: - redis_data:/data command: redis-server --requirepass difyai123456 healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 networks: - default weaviate: image: semitechnologies/weaviate:1.19.0 restart: always volumes: - weaviate_data:/var/lib/weaviate environment: QUERY_DEFAULTS_LIMIT: 25 AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'false' PERSISTENCE_DATA_PATH: '/var/lib/weaviate' DEFAULT_VECTORIZER_MODULE: 'none' CLUSTER_HOSTNAME: 'node1' AUTHENTICATION_APIKEY_ENABLED: 'true' AUTHENTICATION_APIKEY_ALLOWED_KEYS: 'WVF5YThaHlkYwhGUSmCRgsX3tD5ngdN8pkih' AUTHENTICATION_APIKEY_USERS: '[email protected]' AUTHORIZATION_ADMINLIST_ENABLED: 'true' AUTHORIZATION_ADMINLIST_USERS: '[email protected]' networks: - default sandbox: image: langgenius/dify-sandbox:0.2.1 restart: always environment: API_KEY: dify-sandbox GIN_MODE: 'release' WORKER_TIMEOUT: 15 ENABLE_NETWORK: 'true' HTTP_PROXY: 'http://ssrf_proxy:3128' HTTPS_PROXY: 'http://ssrf_proxy:3128' SANDBOX_PORT: 8194 volumes: - ./volumes/sandbox/dependencies:/dependencies networks: - ssrf_proxy_network ssrf_proxy: image: ubuntu/squid:latest restart: always volumes: - ./volumes/ssrf_proxy/squid.conf:/etc/squid/squid.conf networks: - ssrf_proxy_network - default nginx: image: nginx:latest restart: always volumes: - ./nginx/nginx.conf:/etc/nginx/nginx.conf - ./nginx/proxy.conf:/etc/nginx/proxy.conf - ./nginx/conf.d:/etc/nginx/conf.d depends_on: - api - web ports: - "80:80" networks: - default volumes: postgres_data: redis_data: weaviate_data: networks: ssrf_proxy_network: driver: bridge internal: true default:
-
api:
- 使用
langgenius/dify-api:0.6.11
镜像。 - 环境变量配置了数据库、Redis、Weaviate 和其他服务的连接信息。
- 持续重启,依赖
db
和redis
服务。 - 挂载本地存储到容器。
- 使用
-
worker:
- 同样使用
langgenius/dify-api:0.6.11
镜像,但模式为worker
。 - 环境变量类似
api
服务,配置了数据库、Redis 和 Weaviate 的连接信息。 - 持续重启,依赖
db
和redis
服务。 - 挂载本地存储到容器。
- 同样使用
-
web:
- 使用
langgenius/dify-web:0.6.11
镜像。 - 环境变量配置了 API URL 和 Sentry DSN(用于错误监控)。
- 持续重启,依赖
api
服务。
- 使用
-
db:
- 使用
postgres:15-alpine
镜像。 - 配置了 PostgreSQL 数据库的用户名、密码和数据库名。
- 持续重启,并且有健康检查配置。
- 挂载本地存储到容器。
- 使用
-
redis:
- 使用
redis:6-alpine
镜像。 - 配置了 Redis 密码和健康检查。
- 持续重启,挂载本地存储到容器。
- 使用
-
weaviate:
- 使用
semitechnologies/weaviate:1.19.0
镜像。 - 配置了 Weaviate 的身份验证和授权,以及数据持久化路径。
- 持续重启,挂载本地存储到容器。
- 使用
-
sandbox:
- 使用
langgenius/dify-sandbox:0.2.1
镜像。 - 配置了 API 密钥、Gin 模式、代理设置等。
- 持续重启,挂载本地存储到容器。
- 使用
-
ssrf_proxy:
- 使用
ubuntu/squid:latest
镜像。 - 挂载了本地的 Squid 配置文件。
- 持续重启。
- 使用
-
nginx:
- 使用
nginx:latest
镜像。 - 挂载了本地的 Nginx 配置文件。
- 持续重启,依赖
api
和web
服务。 - 映射主机的 80 端口到容器的 80 端口。
- 使用
卷 (Volumes)
postgres_data
: 用于持久化 PostgreSQL 数据。redis_data
: 用于持久化 Redis 数据。weaviate_data
: 用于持久化 Weaviate 数据。
网络 (Networks)
ssrf_proxy_network
: 内部网络,用于 Sandbox 和 SSRF 代理之间的通信。default
: 默认网络,供所有服务使用。
这个配置文件涵盖了 API、Web、数据库、缓存、向量存储、代理和反向代理等多个服务的设置,适用于一个复杂的微服务架构应用。