name: twenty # Twenty CRM - 共享 DB 版本 # 连接 crm-ai-demo_default 网络上的共享 crm-postgres / crm-redis, # 不再自带 postgres/redis。使用预构建镜像 twentycrm/twenty:latest。 # # 启动: docker compose -f packages/twenty-docker/docker-compose.yml --env-file packages/twenty-docker/.env up -d services: server: image: twentycrm/twenty:${TAG:-latest} container_name: crm-twenty-server volumes: - twenty-server-data:/app/packages/twenty-server/.local-storage ports: - "3000:3000" environment: NODE_PORT: 3000 PG_DATABASE_URL: postgres://${PG_DATABASE_USER:-postgres}:${PG_DATABASE_PASSWORD:-postgres}@${PG_DATABASE_HOST:-crm-postgres}:${PG_DATABASE_PORT:-5432}/${PG_DATABASE_NAME:-twenty} SERVER_URL: ${SERVER_URL} REDIS_URL: ${REDIS_URL} DISABLE_DB_MIGRATIONS: ${DISABLE_DB_MIGRATIONS} DISABLE_CRON_JOBS_REGISTRATION: ${DISABLE_CRON_JOBS_REGISTRATION} STORAGE_TYPE: ${STORAGE_TYPE} ENCRYPTION_KEY: ${ENCRYPTION_KEY} FALLBACK_ENCRYPTION_KEY: ${FALLBACK_ENCRYPTION_KEY} APP_SECRET: ${APP_SECRET} SIGN_IN_PREFILLED: "true" IS_BILLING_ENABLED: "false" networks: - default - crm-ai-demo_default healthcheck: test: ["CMD", "wget", "--spider", "-q", "http://localhost:3000/healthz"] interval: 10s timeout: 5s retries: 30 restart: always worker: image: twentycrm/twenty:${TAG:-latest} container_name: crm-twenty-worker volumes: - twenty-server-data:/app/packages/twenty-server/.local-storage command: ["yarn", "worker:prod"] environment: PG_DATABASE_URL: postgres://${PG_DATABASE_USER:-postgres}:${PG_DATABASE_PASSWORD:-postgres}@${PG_DATABASE_HOST:-crm-postgres}:${PG_DATABASE_PORT:-5432}/${PG_DATABASE_NAME:-twenty} SERVER_URL: ${SERVER_URL} REDIS_URL: ${REDIS_URL} DISABLE_DB_MIGRATIONS: "true" DISABLE_CRON_JOBS_REGISTRATION: "true" STORAGE_TYPE: ${STORAGE_TYPE} ENCRYPTION_KEY: ${ENCRYPTION_KEY} FALLBACK_ENCRYPTION_KEY: ${FALLBACK_ENCRYPTION_KEY} APP_SECRET: ${APP_SECRET} depends_on: server: condition: service_healthy networks: - default - crm-ai-demo_default restart: always networks: crm-ai-demo_default: external: true volumes: twenty-server-data: