name: twenty services: server: build: context: ../../ # root of the project dockerfile: packages/twenty-docker/twenty/Dockerfile image: twentycrm/twenty:local volumes: - server-local-data:/app/packages/twenty-server/.local-storage ports: - "9026:3000" environment: NODE_PORT: 3000 PG_DATABASE_URL: postgres://${PG_DATABASE_USER:-postgres}:${PG_DATABASE_PASSWORD:-postgres}@${PG_DATABASE_HOST:-db}:${PG_DATABASE_PORT:-5432}/default SERVER_URL: ${SERVER_URL} REDIS_URL: ${REDIS_URL:-redis://redis:6379} DISABLE_DB_MIGRATIONS: ${DISABLE_DB_MIGRATIONS} DISABLE_CRON_JOBS_REGISTRATION: ${DISABLE_CRON_JOBS_REGISTRATION} STORAGE_TYPE: ${STORAGE_TYPE} STORAGE_S3_REGION: ${STORAGE_S3_REGION} STORAGE_S3_NAME: ${STORAGE_S3_NAME} STORAGE_S3_ENDPOINT: ${STORAGE_S3_ENDPOINT} APP_SECRET: ${APP_SECRET:-replace_me_with_a_random_string} depends_on: db: condition: service_healthy healthcheck: test: curl --fail http://localhost:3000/healthz || exit 1 interval: 5s timeout: 5s retries: 20 restart: always worker: build: context: ../../ dockerfile: packages/twenty-docker/twenty/Dockerfile image: twentycrm/twenty:local volumes: - server-local-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:-db}:${PG_DATABASE_PORT:-5432}/default SERVER_URL: ${SERVER_URL} REDIS_URL: ${REDIS_URL:-redis://redis:6379} DISABLE_DB_MIGRATIONS: "true" DISABLE_CRON_JOBS_REGISTRATION: "true" STORAGE_TYPE: ${STORAGE_TYPE} STORAGE_S3_REGION: ${STORAGE_S3_REGION} STORAGE_S3_NAME: ${STORAGE_S3_NAME} STORAGE_S3_ENDPOINT: ${STORAGE_S3_ENDPOINT} APP_SECRET: ${APP_SECRET:-replace_me_with_a_random_string} depends_on: db: condition: service_healthy server: condition: service_healthy restart: always db: image: postgres:16 volumes: - db-data:/var/lib/postgresql/data environment: POSTGRES_USER: ${PG_DATABASE_USER:-postgres} POSTGRES_PASSWORD: ${PG_DATABASE_PASSWORD:-postgres} healthcheck: test: pg_isready -U ${PG_DATABASE_USER:-postgres} -h localhost -d postgres interval: 5s timeout: 5s retries: 10 restart: always redis: image: redis restart: always command: ["--maxmemory-policy", "noeviction"] volumes: db-data: server-local-data: