diff --git a/templates/compose/appwrite.yaml b/templates/compose/appwrite.yaml index 4f60baa11e..c84821dc15 100644 --- a/templates/compose/appwrite.yaml +++ b/templates/compose/appwrite.yaml @@ -7,69 +7,98 @@ services: appwrite: - image: appwrite/appwrite:1.7.4 - container_name: appwrite - volumes: - - appwrite-uploads:/storage/uploads:rw - - appwrite-imports:/storage/imports:rw - - appwrite-cache:/storage/cache:rw - - appwrite-config:/storage/config:rw - - appwrite-certificates:/storage/certificates:rw - - appwrite-functions:/storage/functions:rw - - appwrite-sites:/storage/sites:rw - - appwrite-builds:/storage/builds:rw - depends_on: - - appwrite-mariadb - - appwrite-redis + image: appwrite/appwrite:2.0.0 environment: - - SERVICE_URL_APPWRITE=/ + - SERVICE_URL_APPWRITE=/v1 - _APP_ENV=${_APP_ENV:-production} + - _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled} + - _APP_USAGE_PASS=$SERVICE_PASSWORD_CLICKHOUSE + - _APP_CONNECTIONS_DB_USAGE=http://appwrite:$SERVICE_PASSWORD_CLICKHOUSE@appwrite-clickhouse:8123/appwrite + - _APP_POOL_SIZE_USAGE=${_APP_POOL_SIZE_USAGE:-2} + - _APP_EXECUTIONS_DUAL_WRITE=${_APP_EXECUTIONS_DUAL_WRITE:-enabled} + - _APP_CONNECTIONS_DB_EXECUTIONS=http://appwrite:$SERVICE_PASSWORD_CLICKHOUSE@appwrite-clickhouse:8123/appwrite + - _APP_POOL_SIZE_EXECUTIONS=${_APP_POOL_SIZE_EXECUTIONS:-2} + - _APP_MAINTENANCE_RETENTION_USAGE_TTL=${_APP_MAINTENANCE_RETENTION_USAGE_TTL:-180} + - _APP_STATS_USAGE_QUEUE_NAME=${_APP_STATS_USAGE_QUEUE_NAME:-v1-stats-usage} + - _APP_STATS_RESOURCES_QUEUE_NAME=${_APP_STATS_RESOURCES_QUEUE_NAME:-v1-stats-resources} + - _APP_STATS_RESOURCES_INTERVAL=${_APP_STATS_RESOURCES_INTERVAL:-3600} - _APP_EDITION=${_APP_EDITION:-self-hosted} - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} + - _APP_POOL_ADAPTER=${_APP_POOL_ADAPTER:-stack} - _APP_LOCALE=${_APP_LOCALE:-en} + - _APP_COMPRESSION_ENABLED=${_APP_COMPRESSION_ENABLED:-enabled} - _APP_COMPRESSION_MIN_SIZE_BYTES=${_APP_COMPRESSION_MIN_SIZE_BYTES} - _APP_CONSOLE_WHITELIST_ROOT=${_APP_CONSOLE_WHITELIST_ROOT:-enabled} - _APP_CONSOLE_WHITELIST_EMAILS=${_APP_CONSOLE_WHITELIST_EMAILS} - - _APP_CONSOLE_SESSION_ALERTS=${_APP_CONSOLE_SESSION_ALERTS} + - _APP_CONSOLE_SESSION_ALERTS=${_APP_CONSOLE_SESSION_ALERTS:-disabled} - _APP_CONSOLE_WHITELIST_IPS=${_APP_CONSOLE_WHITELIST_IPS} - _APP_CONSOLE_HOSTNAMES=${_APP_CONSOLE_HOSTNAMES} + - _APP_CONSOLE_SCHEMA=${_APP_CONSOLE_SCHEMA:-appwriteio} + - _APP_CONSOLE_GITHUB_APP_ID=${_APP_CONSOLE_GITHUB_APP_ID} + - _APP_CONSOLE_GITHUB_SECRET=${_APP_CONSOLE_GITHUB_SECRET} + - _APP_CONSOLE_GITLAB_APP_ID=${_APP_CONSOLE_GITLAB_APP_ID} + - _APP_CONSOLE_GITLAB_SECRET=${_APP_CONSOLE_GITLAB_SECRET} + - _APP_CONSOLE_GITLAB_ENDPOINT=${_APP_CONSOLE_GITLAB_ENDPOINT} + - _APP_CONSOLE_BITBUCKET_APP_ID=${_APP_CONSOLE_BITBUCKET_APP_ID} + - _APP_CONSOLE_BITBUCKET_SECRET=${_APP_CONSOLE_BITBUCKET_SECRET} + - _APP_CONSOLE_GOOGLE_APP_ID=${_APP_CONSOLE_GOOGLE_APP_ID} + - _APP_CONSOLE_GOOGLE_SECRET=${_APP_CONSOLE_GOOGLE_SECRET} - _APP_SYSTEM_EMAIL_NAME=${_APP_SYSTEM_EMAIL_NAME:-Appwrite} - - _APP_SYSTEM_EMAIL_ADDRESS=${_APP_SYSTEM_EMAIL_ADDRESS:-team@appwrite.io} + - _APP_SYSTEM_EMAIL_ADDRESS=${_APP_SYSTEM_EMAIL_ADDRESS:-noreply@appwrite.io} - _APP_SYSTEM_TEAM_EMAIL=${_APP_SYSTEM_TEAM_EMAIL:-team@appwrite.io} - - _APP_EMAIL_SECURITY=${_APP_EMAIL_SECURITY:-certs@appwrite.io} + - _APP_EMAIL_SECURITY=${_APP_EMAIL_SECURITY:-security@appwrite.io} - _APP_SYSTEM_RESPONSE_FORMAT=${_APP_SYSTEM_RESPONSE_FORMAT} - _APP_OPTIONS_ABUSE=${_APP_OPTIONS_ABUSE:-enabled} + - _APP_OPTIONS_ABUSE_INCREASED_LIMIT_PROJECTS=${_APP_OPTIONS_ABUSE_INCREASED_LIMIT_PROJECTS} - _APP_OPTIONS_ROUTER_PROTECTION=${_APP_OPTIONS_ROUTER_PROTECTION:-disabled} - - _APP_OPTIONS_FORCE_HTTPS=${_APP_OPTIONS_FORCE_HTTPS:-disabled} + - _APP_OPTIONS_FORCE_HTTPS=${_APP_OPTIONS_FORCE_HTTPS:-enabled} - _APP_OPTIONS_ROUTER_FORCE_HTTPS=${_APP_OPTIONS_ROUTER_FORCE_HTTPS:-disabled} + - _APP_ROUTER_AUTO_CERTIFICATES=${_APP_ROUTER_AUTO_CERTIFICATES:-disabled} - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_CONSOLE_DOMAIN=${_APP_CONSOLE_DOMAIN} + - _APP_NOTIFICATIONS_TRACKING_SECRET=$SERVICE_PASSWORD_64_NOTIFICATIONS - _APP_DOMAIN=${_APP_DOMAIN:-$SERVICE_FQDN_APPWRITE} + - _APP_CONSOLE_DOMAIN=${_APP_CONSOLE_DOMAIN} + - _APP_CONSOLE_URL_SCHEME=root + - _APP_CONSOLE_TRUSTED_PROJECTS=${_APP_CONSOLE_TRUSTED_PROJECTS} - _APP_DOMAIN_TARGET_CNAME=${_APP_DOMAIN_TARGET_CNAME:-localhost} - _APP_DOMAIN_TARGET_AAAA=${_APP_DOMAIN_TARGET_AAAA:-::1} - _APP_DOMAIN_TARGET_A=${_APP_DOMAIN_TARGET_A:-127.0.0.1} - _APP_DOMAIN_TARGET_CAA=${_APP_DOMAIN_TARGET_CAA} - - _APP_DOMAIN_FUNCTIONS=${_APP_DOMAIN_FUNCTIONS:-functions.$SERVICE_FQDN_APPWRITE} - _APP_DNS=${_APP_DNS} + - _APP_DOMAIN_FUNCTIONS=${_APP_DOMAIN_FUNCTIONS:-functions.$SERVICE_FQDN_APPWRITE} - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - _APP_REDIS_USER=${_APP_REDIS_USER} - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} + - _APP_DB_ADAPTER=${_APP_DB_ADAPTER:-postgresql} + - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-postgresql} + - _APP_DB_PORT=${_APP_DB_PORT:-5432} - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB + - _APP_DB_USER=$SERVICE_USER_POSTGRES + - _APP_DB_PASS=$SERVICE_PASSWORD_POSTGRES + - _APP_DB_ADAPTER_VECTORSDB=${_APP_DB_ADAPTER_VECTORSDB:-postgresql} + - _APP_DB_HOST_VECTORSDB=${_APP_DB_HOST_VECTORSDB:-appwrite-postgresql} + - _APP_DB_PORT_VECTORSDB=${_APP_DB_PORT_VECTORSDB:-5432} + - _APP_DB_SCHEMA_VECTORSDB=${_APP_DB_SCHEMA_VECTORSDB:-appwrite} + - _APP_DB_USER_VECTORSDB=$SERVICE_USER_POSTGRES + - _APP_DB_PASS_VECTORSDB=$SERVICE_PASSWORD_POSTGRES + - _APP_DB_ADAPTER_DOCUMENTSDB=${_APP_DB_ADAPTER_DOCUMENTSDB:-mongodb} + - _APP_DB_HOST_DOCUMENTSDB=${_APP_DB_HOST_DOCUMENTSDB} + - _APP_DB_PORT_DOCUMENTSDB=${_APP_DB_PORT_DOCUMENTSDB:-27017} + - _APP_DB_SCHEMA_DOCUMENTSDB=${_APP_DB_SCHEMA_DOCUMENTSDB} + - _APP_DB_USER_DOCUMENTSDB=${_APP_DB_USER_DOCUMENTSDB} + - _APP_DB_PASS_DOCUMENTSDB=${_APP_DB_PASS_DOCUMENTSDB} + - _APP_CONNECTIONS_DATABASE_DOCUMENTSDB=${_APP_CONNECTIONS_DATABASE_DOCUMENTSDB} + - _APP_CONNECTIONS_DATABASE_VECTORSDB=${_APP_CONNECTIONS_DATABASE_VECTORSDB} - _APP_SMTP_HOST=${_APP_SMTP_HOST} - _APP_SMTP_PORT=${_APP_SMTP_PORT} - _APP_SMTP_SECURE=${_APP_SMTP_SECURE} - _APP_SMTP_USERNAME=${_APP_SMTP_USERNAME} - _APP_SMTP_PASSWORD=${_APP_SMTP_PASSWORD} - - _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled} - _APP_STORAGE_LIMIT=${_APP_STORAGE_LIMIT:-30000000} - _APP_STORAGE_PREVIEW_LIMIT=${_APP_STORAGE_PREVIEW_LIMIT:-20000000} - _APP_STORAGE_ANTIVIRUS=${_APP_STORAGE_ANTIVIRUS:-disabled} - - _APP_STORAGE_ANTIVIRUS_HOST=${_APP_STORAGE_ANTIVIRUS_HOST:-appwrite-clamav} + - _APP_STORAGE_ANTIVIRUS_HOST=${_APP_STORAGE_ANTIVIRUS_HOST} - _APP_STORAGE_ANTIVIRUS_PORT=${_APP_STORAGE_ANTIVIRUS_PORT:-3310} - _APP_STORAGE_DEVICE=${_APP_STORAGE_DEVICE:-local} - _APP_STORAGE_S3_ACCESS_KEY=${_APP_STORAGE_S3_ACCESS_KEY} @@ -96,18 +125,22 @@ services: - _APP_COMPUTE_SIZE_LIMIT=${_APP_COMPUTE_SIZE_LIMIT:-30000000} - _APP_FUNCTIONS_TIMEOUT=${_APP_FUNCTIONS_TIMEOUT:-900} - _APP_SITES_TIMEOUT=${_APP_SITES_TIMEOUT:-900} - - _APP_COMPUTE_BUILD_TIMEOUT=${_APP_COMPUTE_BUILD_TIMEOUT:-900} + - _APP_COMPUTE_BUILD_TIMEOUT=${_APP_COMPUTE_BUILD_TIMEOUT:-2700} - _APP_COMPUTE_CPUS=${_APP_COMPUTE_CPUS:-0} - _APP_COMPUTE_MEMORY=${_APP_COMPUTE_MEMORY:-0} - - _APP_FUNCTIONS_RUNTIMES=${_APP_FUNCTIONS_RUNTIMES:-node-20.0,php-8.2,python-3.11,ruby-3.2} - - _APP_SITES_RUNTIMES=${_APP_SITES_RUNTIMES} + - _APP_FUNCTIONS_RUNTIMES=${_APP_FUNCTIONS_RUNTIMES:-node-22} + - _APP_SITES_RUNTIMES=${_APP_SITES_RUNTIMES:-static-1,node-22} - _APP_DOMAIN_SITES=${_APP_DOMAIN_SITES:-sites.$SERVICE_FQDN_APPWRITE} - - _APP_EXECUTOR_SECRET=$SERVICE_PASSWORD_64_APPWRITE - - _APP_EXECUTOR_HOST=${_APP_EXECUTOR_HOST:-http://appwrite-executor/v1} + - _APP_EXECUTOR_SECRET=$SERVICE_PASSWORD_64_EXECUTOR + - _APP_EXECUTOR_HOST=${_APP_EXECUTOR_HOST:-http://openruntimes-executor/v1} + - _APP_BUILDS_VOLUME=${COMPOSE_PROJECT_NAME}_appwrite-builds + - _APP_JOBS_HOST=${_APP_JOBS_HOST:-http://orchestrator:8080} + - _APP_JOBS_SECRET=$SERVICE_PASSWORD_64_JOBS + - _APP_JOBS_ENDPOINT=${_APP_JOBS_ENDPOINT:-http://appwrite} - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} + - _APP_LOGGING_FORMAT=${_APP_LOGGING_FORMAT:-pretty} + - _APP_LOCKING_ENABLED=${_APP_LOCKING_ENABLED:-enabled} - _APP_MAINTENANCE_INTERVAL=${_APP_MAINTENANCE_INTERVAL:-86400} - - _APP_MAINTENANCE_DELAY=${_APP_MAINTENANCE_DELAY} - - _APP_MAINTENANCE_START_TIME=${_APP_MAINTENANCE_START_TIME} - _APP_MAINTENANCE_RETENTION_EXECUTION=${_APP_MAINTENANCE_RETENTION_EXECUTION:-1209600} - _APP_MAINTENANCE_RETENTION_CACHE=${_APP_MAINTENANCE_RETENTION_CACHE:-2592000} - _APP_MAINTENANCE_RETENTION_ABUSE=${_APP_MAINTENANCE_RETENTION_ABUSE:-86400} @@ -117,6 +150,7 @@ services: - _APP_MAINTENANCE_RETENTION_SCHEDULES=${_APP_MAINTENANCE_RETENTION_SCHEDULES:-86400} - _APP_SMS_PROVIDER=${_APP_SMS_PROVIDER} - _APP_SMS_FROM=${_APP_SMS_FROM} + - _APP_GRAPHQL_INTROSPECTION=${_APP_GRAPHQL_INTROSPECTION:-enabled} - _APP_GRAPHQL_MAX_BATCH_SIZE=${_APP_GRAPHQL_MAX_BATCH_SIZE:-10} - _APP_GRAPHQL_MAX_COMPLEXITY=${_APP_GRAPHQL_MAX_COMPLEXITY:-250} - _APP_GRAPHQL_MAX_DEPTH=${_APP_GRAPHQL_MAX_DEPTH:-3} @@ -126,156 +160,204 @@ services: - _APP_VCS_GITHUB_WEBHOOK_SECRET=${_APP_VCS_GITHUB_WEBHOOK_SECRET} - _APP_VCS_GITHUB_CLIENT_SECRET=${_APP_VCS_GITHUB_CLIENT_SECRET} - _APP_VCS_GITHUB_CLIENT_ID=${_APP_VCS_GITHUB_CLIENT_ID} + - _APP_VCS_GITEA_ENDPOINT=${_APP_VCS_GITEA_ENDPOINT} + - _APP_VCS_GITEA_BROWSER_ENDPOINT=${_APP_VCS_GITEA_BROWSER_ENDPOINT} + - _APP_VCS_GITEA_CLIENT_ID=${_APP_VCS_GITEA_CLIENT_ID} + - _APP_VCS_GITEA_CLIENT_SECRET=${_APP_VCS_GITEA_CLIENT_SECRET} + - _APP_VCS_GITEA_WEBHOOK_SECRET=${_APP_VCS_GITEA_WEBHOOK_SECRET} + - _APP_VCS_GITLAB_ENDPOINT=${_APP_VCS_GITLAB_ENDPOINT} + - _APP_VCS_GITLAB_CLIENT_ID=${_APP_VCS_GITLAB_CLIENT_ID} + - _APP_VCS_GITLAB_CLIENT_SECRET=${_APP_VCS_GITLAB_CLIENT_SECRET} + - _APP_VCS_GITLAB_WEBHOOK_SECRET=${_APP_VCS_GITLAB_WEBHOOK_SECRET} + - _APP_VCS_BITBUCKET_CLIENT_ID=${_APP_VCS_BITBUCKET_CLIENT_ID} + - _APP_VCS_BITBUCKET_CLIENT_SECRET=${_APP_VCS_BITBUCKET_CLIENT_SECRET} + - _APP_VCS_BITBUCKET_WEBHOOK_SECRET=${_APP_VCS_BITBUCKET_WEBHOOK_SECRET} + - _APP_VCS_ORIGIN_CLIENT_ID=${_APP_VCS_ORIGIN_CLIENT_ID} + - _APP_VCS_ORIGIN_PRIVATE_KEY=${_APP_VCS_ORIGIN_PRIVATE_KEY} + - _APP_VCS_WEBHOOK_URL=${_APP_VCS_WEBHOOK_URL} - _APP_MIGRATIONS_FIREBASE_CLIENT_ID=${_APP_MIGRATIONS_FIREBASE_CLIENT_ID} - _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET=${_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET} - _APP_ASSISTANT_OPENAI_API_KEY=${_APP_ASSISTANT_OPENAI_API_KEY} - - _APP_MESSAGE_SMS_TEST_DSN=${_APP_MESSAGE_SMS_TEST_DSN} - - _APP_MESSAGE_EMAIL_TEST_DSN=${_APP_MESSAGE_EMAIL_TEST_DSN} - - _APP_MESSAGE_PUSH_TEST_DSN=${_APP_MESSAGE_PUSH_TEST_DSN} - _APP_CONSOLE_COUNTRIES_DENYLIST=${_APP_CONSOLE_COUNTRIES_DENYLIST} - _APP_EXPERIMENT_LOGGING_PROVIDER=${_APP_EXPERIMENT_LOGGING_PROVIDER} - _APP_EXPERIMENT_LOGGING_CONFIG=${_APP_EXPERIMENT_LOGGING_CONFIG} - _APP_DATABASE_SHARED_TABLES=${_APP_DATABASE_SHARED_TABLES} - - _APP_DATABASE_SHARED_TABLES_V1=${_APP_DATABASE_SHARED_TABLES_V1} - _APP_DATABASE_SHARED_NAMESPACE=${_APP_DATABASE_SHARED_NAMESPACE} - _APP_FUNCTIONS_CREATION_ABUSE_LIMIT=${_APP_FUNCTIONS_CREATION_ABUSE_LIMIT} - - _APP_CUSTOM_DOMAIN_DENY_LIST=${_APP_CUSTOM_DOMAIN_DENY_LIST} + - _APP_CUSTOM_DOMAIN_DENY_LIST=${_APP_CUSTOM_DOMAIN_DENY_LIST:-example.com,test.com,app.example.com} + - _APP_TRUSTED_HEADERS=${_APP_TRUSTED_HEADERS:-x-forwarded-for} + - _APP_MIGRATION_HOST=${_APP_MIGRATION_HOST:-appwrite} + - _APP_GEO_SECRET=$SERVICE_PASSWORD_64_GEO + - _APP_GEO_ENDPOINT=${_APP_GEO_ENDPOINT:-http://appwrite-geo/v1} + - _APP_LIMIT_DATABASE_BATCH=${_APP_LIMIT_DATABASE_BATCH:-100} + - _APP_DOCUMENTSDB=${_APP_DOCUMENTSDB:-disabled} + - _APP_VECTORSDB=${_APP_VECTORSDB:-disabled} + - _APP_EMBEDDING=${_APP_EMBEDDING:-disabled} + volumes: + - appwrite-uploads:/storage/uploads:rw + - appwrite-imports:/storage/imports:rw + - appwrite-cache:/storage/cache:rw + - appwrite-config:/storage/config:rw + - appwrite-certificates:/storage/certificates:rw + - appwrite-functions:/storage/functions:rw + - appwrite-sites:/storage/sites:rw + - appwrite-builds:/storage/builds:rw + depends_on: + appwrite-postgresql: + condition: service_healthy + appwrite-redis: + condition: service_healthy + appwrite-clickhouse: + condition: service_healthy + appwrite-geo: + condition: service_healthy healthcheck: - test: ["CMD-SHELL", "curl -fsI http://localhost:80 | head -n 1 | grep -E '^HTTP/.* 3[0-9]{2} ' || exit 1"] + test: ["CMD-SHELL", "curl -fsS -o /dev/null http://localhost/v1/health/version || exit 1"] interval: 20s timeout: 5s - retries: 3 + retries: 6 + start_period: 120s appwrite-console: - image: appwrite/console:6.1.28 - container_name: appwrite-console + image: appwrite/new:1.1.16 environment: - - SERVICE_URL_APPWRITE=/console + - SERVICE_URL_APPWRITE_3000=/ + - VITE_CONSOLE_PROFILE=self-hosted + - APPWRITE_ENDPOINT_SAME_ORIGIN=true + - VITE_GROWTH_ENDPOINT=${VITE_GROWTH_ENDPOINT:-https://growth.appwrite.io/v1} + depends_on: + appwrite: + condition: service_healthy healthcheck: - test: ["CMD-SHELL", "curl -fsI http://localhost:80 | head -n 1 | grep -E '^HTTP/.* 3[0-9]{2} ' || exit 1"] + test: ["CMD-SHELL", "bun -e \"fetch('http://localhost:3000').then(r => process.exit(r.status < 500 ? 0 : 1)).catch(() => process.exit(1))\""] interval: 20s timeout: 5s retries: 3 appwrite-realtime: - image: appwrite/appwrite:1.7.4 + image: appwrite/appwrite:2.0.0 entrypoint: realtime - container_name: appwrite-realtime - depends_on: - - appwrite-mariadb - - appwrite-redis environment: - SERVICE_URL_APPWRITE=/v1/realtime - _APP_ENV=${_APP_ENV:-production} + - _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled} + - _APP_STATS_USAGE_QUEUE_NAME=${_APP_STATS_USAGE_QUEUE_NAME:-v1-stats-usage} - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - _APP_OPTIONS_ABUSE=${_APP_OPTIONS_ABUSE:-enabled} - _APP_OPTIONS_ROUTER_PROTECTION=${_APP_OPTIONS_ROUTER_PROTECTION:-disabled} + - _APP_CONSOLE_HOSTNAMES=${_APP_CONSOLE_HOSTNAMES} + - _APP_REALTIME_TAIL_RATE=${_APP_REALTIME_TAIL_RATE:-50} - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - _APP_REDIS_USER=${_APP_REDIS_USER} - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} + - _APP_DB_ADAPTER=${_APP_DB_ADAPTER:-postgresql} + - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-postgresql} + - _APP_DB_PORT=${_APP_DB_PORT:-5432} - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled} + - _APP_DB_USER=$SERVICE_USER_POSTGRES + - _APP_DB_PASS=$SERVICE_PASSWORD_POSTGRES + - _APP_DB_ADAPTER_VECTORSDB=${_APP_DB_ADAPTER_VECTORSDB:-postgresql} + - _APP_DB_HOST_VECTORSDB=${_APP_DB_HOST_VECTORSDB:-appwrite-postgresql} + - _APP_DB_PORT_VECTORSDB=${_APP_DB_PORT_VECTORSDB:-5432} + - _APP_DB_SCHEMA_VECTORSDB=${_APP_DB_SCHEMA_VECTORSDB:-appwrite} + - _APP_DB_USER_VECTORSDB=$SERVICE_USER_POSTGRES + - _APP_DB_PASS_VECTORSDB=$SERVICE_PASSWORD_POSTGRES + - _APP_DB_ADAPTER_DOCUMENTSDB=${_APP_DB_ADAPTER_DOCUMENTSDB:-mongodb} + - _APP_DB_HOST_DOCUMENTSDB=${_APP_DB_HOST_DOCUMENTSDB} + - _APP_DB_PORT_DOCUMENTSDB=${_APP_DB_PORT_DOCUMENTSDB:-27017} + - _APP_DB_SCHEMA_DOCUMENTSDB=${_APP_DB_SCHEMA_DOCUMENTSDB} + - _APP_DB_USER_DOCUMENTSDB=${_APP_DB_USER_DOCUMENTSDB} + - _APP_DB_PASS_DOCUMENTSDB=${_APP_DB_PASS_DOCUMENTSDB} + - _APP_CONNECTIONS_DATABASE_DOCUMENTSDB=${_APP_CONNECTIONS_DATABASE_DOCUMENTSDB} + - _APP_CONNECTIONS_DATABASE_VECTORSDB=${_APP_CONNECTIONS_DATABASE_VECTORSDB} - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} + - _APP_LOGGING_FORMAT=${_APP_LOGGING_FORMAT:-pretty} + - _APP_LOGGING_CONFIG_REALTIME=${_APP_LOGGING_CONFIG_REALTIME} - _APP_DATABASE_SHARED_TABLES=${_APP_DATABASE_SHARED_TABLES} + - _APP_LIMIT_DATABASE_BATCH=${_APP_LIMIT_DATABASE_BATCH:-100} + - _APP_DOCUMENTSDB=${_APP_DOCUMENTSDB:-disabled} + - _APP_VECTORSDB=${_APP_VECTORSDB:-disabled} + - _APP_EMBEDDING=${_APP_EMBEDDING:-disabled} + - _APP_POOL_ADAPTER=swoole + depends_on: + appwrite-postgresql: + condition: service_healthy + appwrite-redis: + condition: service_healthy healthcheck: test: ["CMD-SHELL", "curl -s localhost > /dev/null || exit 1"] interval: 20s timeout: 5s retries: 3 - appwrite-worker-audits: - image: appwrite/appwrite:1.7.4 - entrypoint: worker-audits - container_name: appwrite-worker-audits - depends_on: - - appwrite-redis - - appwrite-mariadb + appwrite-worker: + image: appwrite/appwrite:2.0.0 + entrypoint: worker environment: - _APP_ENV=${_APP_ENV:-production} + - _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled} + - _APP_USAGE_PASS=$SERVICE_PASSWORD_CLICKHOUSE + - _APP_CONNECTIONS_DB_USAGE=http://appwrite:$SERVICE_PASSWORD_CLICKHOUSE@appwrite-clickhouse:8123/appwrite + - _APP_POOL_SIZE_USAGE=${_APP_POOL_SIZE_USAGE:-2} + - _APP_EXECUTIONS_DUAL_WRITE=${_APP_EXECUTIONS_DUAL_WRITE:-enabled} + - _APP_CONNECTIONS_DB_EXECUTIONS=http://appwrite:$SERVICE_PASSWORD_CLICKHOUSE@appwrite-clickhouse:8123/appwrite + - _APP_POOL_SIZE_EXECUTIONS=${_APP_POOL_SIZE_EXECUTIONS:-2} + - _APP_MAINTENANCE_RETENTION_USAGE_TTL=${_APP_MAINTENANCE_RETENTION_USAGE_TTL:-180} + - _APP_STATS_USAGE_QUEUE_NAME=${_APP_STATS_USAGE_QUEUE_NAME:-v1-stats-usage} + - _APP_STATS_RESOURCES_QUEUE_NAME=${_APP_STATS_RESOURCES_QUEUE_NAME:-v1-stats-resources} + - _APP_STATS_RESOURCES_INTERVAL=${_APP_STATS_RESOURCES_INTERVAL:-3600} + - _APP_WORKERS_NUM=1 + - _APP_WORKER_MAX_COROUTINES=78 - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} + - _APP_POOL_ADAPTER=${_APP_POOL_ADAPTER:-stack} - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} + - _APP_EMAIL_SECURITY=${_APP_EMAIL_SECURITY:-security@appwrite.io} + - _APP_EMAIL_CERTIFICATES=${_APP_EMAIL_CERTIFICATES} + - _APP_DB_ADAPTER=${_APP_DB_ADAPTER:-postgresql} + - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-postgresql} + - _APP_DB_PORT=${_APP_DB_PORT:-5432} - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - - _APP_DATABASE_SHARED_TABLES=${_APP_DATABASE_SHARED_TABLES} - healthcheck: - test: ["CMD-SHELL", "ps aux | grep -q '[w]orker-audits' || exit 1"] - interval: 20s - timeout: 5s - retries: 3 - - - appwrite-worker-webhooks: - image: appwrite/appwrite:1.7.4 - entrypoint: worker-webhooks - container_name: appwrite-worker-webhooks - depends_on: - - appwrite-redis - - appwrite-mariadb - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_EMAIL_SECURITY=${_APP_EMAIL_SECURITY:-certs@appwrite.io} - - _APP_SYSTEM_SECURITY_EMAIL_ADDRESS=${_APP_SYSTEM_SECURITY_EMAIL_ADDRESS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB + - _APP_DB_USER=$SERVICE_USER_POSTGRES + - _APP_DB_PASS=$SERVICE_PASSWORD_POSTGRES + - _APP_DB_ADAPTER_VECTORSDB=${_APP_DB_ADAPTER_VECTORSDB:-postgresql} + - _APP_DB_HOST_VECTORSDB=${_APP_DB_HOST_VECTORSDB:-appwrite-postgresql} + - _APP_DB_PORT_VECTORSDB=${_APP_DB_PORT_VECTORSDB:-5432} + - _APP_DB_SCHEMA_VECTORSDB=${_APP_DB_SCHEMA_VECTORSDB:-appwrite} + - _APP_DB_USER_VECTORSDB=$SERVICE_USER_POSTGRES + - _APP_DB_PASS_VECTORSDB=$SERVICE_PASSWORD_POSTGRES + - _APP_DB_ADAPTER_DOCUMENTSDB=${_APP_DB_ADAPTER_DOCUMENTSDB:-mongodb} + - _APP_DB_HOST_DOCUMENTSDB=${_APP_DB_HOST_DOCUMENTSDB} + - _APP_DB_PORT_DOCUMENTSDB=${_APP_DB_PORT_DOCUMENTSDB:-27017} + - _APP_DB_SCHEMA_DOCUMENTSDB=${_APP_DB_SCHEMA_DOCUMENTSDB} + - _APP_DB_USER_DOCUMENTSDB=${_APP_DB_USER_DOCUMENTSDB} + - _APP_DB_PASS_DOCUMENTSDB=${_APP_DB_PASS_DOCUMENTSDB} + - _APP_CONNECTIONS_DATABASE_DOCUMENTSDB=${_APP_CONNECTIONS_DATABASE_DOCUMENTSDB} + - _APP_CONNECTIONS_DATABASE_VECTORSDB=${_APP_CONNECTIONS_DATABASE_VECTORSDB} - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - _APP_REDIS_USER=${_APP_REDIS_USER} - _APP_REDIS_PASS=${_APP_REDIS_PASS} - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - - _APP_WEBHOOK_MAX_FAILED_ATTEMPTS=${_APP_WEBHOOK_MAX_FAILED_ATTEMPTS} + - _APP_LOGGING_FORMAT=${_APP_LOGGING_FORMAT:-pretty} + - _APP_LOGGING_PROVIDER=${_APP_LOGGING_PROVIDER} + - _APP_QUEUE_NAME=${_APP_QUEUE_NAME} - _APP_DATABASE_SHARED_TABLES=${_APP_DATABASE_SHARED_TABLES} - healthcheck: - test: ["CMD-SHELL", "ps aux | grep -q '[w]orker-webhooks' || exit 1"] - interval: 20s - timeout: 5s - retries: 3 - - appwrite-worker-deletes: - image: appwrite/appwrite:1.7.4 - entrypoint: worker-deletes - container_name: appwrite-worker-deletes - depends_on: - - appwrite-redis - - appwrite-mariadb - volumes: - - appwrite-uploads:/storage/uploads:rw - - appwrite-cache:/storage/cache:rw - - appwrite-functions:/storage/functions:rw - - appwrite-sites:/storage/sites:rw - - appwrite-builds:/storage/builds:rw - - appwrite-certificates:/storage/certificates:rw - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB + - _APP_CONSOLE_URL_SCHEME=root + - _APP_CONSOLE_DOMAIN=${_APP_CONSOLE_DOMAIN} + - _APP_CONSOLE_TRUSTED_PROJECTS=${_APP_CONSOLE_TRUSTED_PROJECTS} + - _APP_DOMAIN=${_APP_DOMAIN:-$SERVICE_FQDN_APPWRITE} + - _APP_DOMAIN_TARGET_CNAME=${_APP_DOMAIN_TARGET_CNAME:-localhost} + - _APP_DOMAIN_TARGET_AAAA=${_APP_DOMAIN_TARGET_AAAA:-::1} + - _APP_DOMAIN_TARGET_A=${_APP_DOMAIN_TARGET_A:-127.0.0.1} + - _APP_DOMAIN_TARGET_CAA=${_APP_DOMAIN_TARGET_CAA} + - _APP_DNS=${_APP_DNS} + - _APP_DOMAIN_FUNCTIONS=${_APP_DOMAIN_FUNCTIONS:-functions.$SERVICE_FQDN_APPWRITE} + - _APP_DOMAIN_SITES=${_APP_DOMAIN_SITES:-sites.$SERVICE_FQDN_APPWRITE} + - _APP_OPTIONS_FORCE_HTTPS=${_APP_OPTIONS_FORCE_HTTPS:-enabled} + - _APP_OPTIONS_ROUTER_FORCE_HTTPS=${_APP_OPTIONS_ROUTER_FORCE_HTTPS:-disabled} + - _APP_WEBHOOK_MAX_FAILED_ATTEMPTS=${_APP_WEBHOOK_MAX_FAILED_ATTEMPTS:-10} - _APP_STORAGE_DEVICE=${_APP_STORAGE_DEVICE:-local} - _APP_STORAGE_S3_ACCESS_KEY=${_APP_STORAGE_S3_ACCESS_KEY} - _APP_STORAGE_S3_SECRET=${_APP_STORAGE_S3_SECRET} @@ -298,356 +380,166 @@ services: - _APP_STORAGE_WASABI_SECRET=${_APP_STORAGE_WASABI_SECRET} - _APP_STORAGE_WASABI_REGION=${_APP_STORAGE_WASABI_REGION:-eu-central-1} - _APP_STORAGE_WASABI_BUCKET=${_APP_STORAGE_WASABI_BUCKET} - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - - _APP_EXECUTOR_SECRET=$SERVICE_PASSWORD_64_APPWRITE - - _APP_EXECUTOR_HOST=${_APP_EXECUTOR_HOST:-http://appwrite-executor/v1} - - _APP_DATABASE_SHARED_TABLES=${_APP_DATABASE_SHARED_TABLES} - - _APP_DATABASE_SHARED_TABLES_V1=${_APP_DATABASE_SHARED_TABLES_V1} - - _APP_EMAIL_CERTIFICATES=${_APP_EMAIL_CERTIFICATES} - - _APP_MAINTENANCE_RETENTION_AUDIT=${_APP_MAINTENANCE_RETENTION_AUDIT:-1209600} - - _APP_MAINTENANCE_RETENTION_AUDIT_CONSOLE=${_APP_MAINTENANCE_RETENTION_AUDIT_CONSOLE} - healthcheck: - test: ["CMD-SHELL", "ps aux | grep -q '[w]orker-deletes' || exit 1"] - interval: 20s - timeout: 5s - retries: 3 - - appwrite-worker-databases: - image: appwrite/appwrite:1.7.4 - entrypoint: worker-databases - container_name: appwrite-worker-databases - depends_on: - - appwrite-redis - - appwrite-mariadb - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - - _APP_WORKERS_NUM=${_APP_WORKERS_NUM} - - _APP_QUEUE_NAME=${_APP_QUEUE_NAME} - - _APP_DATABASE_SHARED_TABLES=${_APP_DATABASE_SHARED_TABLES} - healthcheck: - test: ["CMD-SHELL", "ps aux | grep -q '[w]orker-databases' || exit 1"] - interval: 20s - timeout: 5s - retries: 3 - - - appwrite-worker-builds: - image: appwrite/appwrite:1.7.4 - entrypoint: worker-builds - container_name: appwrite-worker-builds - depends_on: - - appwrite-redis - - appwrite-mariadb - volumes: - - appwrite-functions:/storage/functions:rw - - appwrite-sites:/storage/sites:rw - - appwrite-builds:/storage/builds:rw - - appwrite-uploads:/storage/uploads:rw - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_EXECUTOR_SECRET=$SERVICE_PASSWORD_64_APPWRITE - - _APP_EXECUTOR_HOST=${_APP_EXECUTOR_HOST:-http://appwrite-executor/v1} - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} + - _APP_EXECUTOR_SECRET=$SERVICE_PASSWORD_64_EXECUTOR + - _APP_EXECUTOR_HOST=${_APP_EXECUTOR_HOST:-http://openruntimes-executor/v1} + - _APP_DOCKER_HUB_USERNAME=${_APP_DOCKER_HUB_USERNAME} + - _APP_DOCKER_HUB_PASSWORD=${_APP_DOCKER_HUB_PASSWORD} + - _APP_FUNCTIONS_TIMEOUT=${_APP_FUNCTIONS_TIMEOUT:-900} + - _APP_SITES_TIMEOUT=${_APP_SITES_TIMEOUT:-900} + - _APP_COMPUTE_BUILD_TIMEOUT=${_APP_COMPUTE_BUILD_TIMEOUT:-2700} + - _APP_COMPUTE_CPUS=${_APP_COMPUTE_CPUS:-0} + - _APP_COMPUTE_MEMORY=${_APP_COMPUTE_MEMORY:-0} + - _APP_OPEN_RUNTIMES_NFT=${_APP_OPEN_RUNTIMES_NFT:-enabled} + - _APP_COMPUTE_SIZE_LIMIT=${_APP_COMPUTE_SIZE_LIMIT:-30000000} - _APP_VCS_GITHUB_APP_NAME=${_APP_VCS_GITHUB_APP_NAME} - _APP_VCS_GITHUB_PRIVATE_KEY=${_APP_VCS_GITHUB_PRIVATE_KEY} - _APP_VCS_GITHUB_APP_ID=${_APP_VCS_GITHUB_APP_ID} - - _APP_FUNCTIONS_TIMEOUT=${_APP_FUNCTIONS_TIMEOUT:-900} - - _APP_SITES_TIMEOUT=${_APP_SITES_TIMEOUT:-900} - - _APP_COMPUTE_BUILD_TIMEOUT=${_APP_COMPUTE_BUILD_TIMEOUT:-900} - - _APP_COMPUTE_CPUS=${_APP_COMPUTE_CPUS:-0} - - _APP_COMPUTE_MEMORY=${_APP_COMPUTE_MEMORY:-0} - - _APP_COMPUTE_SIZE_LIMIT=${_APP_COMPUTE_SIZE_LIMIT:-30000000} - - _APP_OPTIONS_FORCE_HTTPS=${_APP_OPTIONS_FORCE_HTTPS:-disabled} - - _APP_OPTIONS_ROUTER_FORCE_HTTPS=${_APP_OPTIONS_ROUTER_FORCE_HTTPS:-disabled} - - _APP_DOMAIN=${_APP_DOMAIN:-$SERVICE_FQDN_APPWRITE} - - _APP_STORAGE_DEVICE=${_APP_STORAGE_DEVICE:-local} - - _APP_STORAGE_S3_ACCESS_KEY=${_APP_STORAGE_S3_ACCESS_KEY} - - _APP_STORAGE_S3_SECRET=${_APP_STORAGE_S3_SECRET} - - _APP_STORAGE_S3_REGION=${_APP_STORAGE_S3_REGION:-us-east-1} - - _APP_STORAGE_S3_BUCKET=${_APP_STORAGE_S3_BUCKET} - - _APP_STORAGE_S3_ENDPOINT=${_APP_STORAGE_S3_ENDPOINT} - - _APP_STORAGE_DO_SPACES_ACCESS_KEY=${_APP_STORAGE_DO_SPACES_ACCESS_KEY} - - _APP_STORAGE_DO_SPACES_SECRET=${_APP_STORAGE_DO_SPACES_SECRET} - - _APP_STORAGE_DO_SPACES_REGION=${_APP_STORAGE_DO_SPACES_REGION:-us-east-1} - - _APP_STORAGE_DO_SPACES_BUCKET=${_APP_STORAGE_DO_SPACES_BUCKET} - - _APP_STORAGE_BACKBLAZE_ACCESS_KEY=${_APP_STORAGE_BACKBLAZE_ACCESS_KEY} - - _APP_STORAGE_BACKBLAZE_SECRET=${_APP_STORAGE_BACKBLAZE_SECRET} - - _APP_STORAGE_BACKBLAZE_REGION=${_APP_STORAGE_BACKBLAZE_REGION:-us-west-004} - - _APP_STORAGE_BACKBLAZE_BUCKET=${_APP_STORAGE_BACKBLAZE_BUCKET} - - _APP_STORAGE_LINODE_ACCESS_KEY=${_APP_STORAGE_LINODE_ACCESS_KEY} - - _APP_STORAGE_LINODE_SECRET=${_APP_STORAGE_LINODE_SECRET} - - _APP_STORAGE_LINODE_REGION=${_APP_STORAGE_LINODE_REGION:-eu-central-1} - - _APP_STORAGE_LINODE_BUCKET=${_APP_STORAGE_LINODE_BUCKET} - - _APP_STORAGE_WASABI_ACCESS_KEY=${_APP_STORAGE_WASABI_ACCESS_KEY} - - _APP_STORAGE_WASABI_SECRET=${_APP_STORAGE_WASABI_SECRET} - - _APP_STORAGE_WASABI_REGION=${_APP_STORAGE_WASABI_REGION:-eu-central-1} - - _APP_STORAGE_WASABI_BUCKET=${_APP_STORAGE_WASABI_BUCKET} - - _APP_DATABASE_SHARED_TABLES=${_APP_DATABASE_SHARED_TABLES} - - _APP_DOMAIN_SITES=${_APP_DOMAIN_SITES:-sites.$SERVICE_FQDN_APPWRITE} - - _APP_BROWSER_HOST=${_APP_BROWSER_HOST} - - _APP_CONSOLE_DOMAIN=${_APP_CONSOLE_DOMAIN} - healthcheck: - test: ["CMD-SHELL", "ps aux | grep -q '[w]orker-builds' || exit 1"] - interval: 20s - timeout: 5s - retries: 3 - - appwrite-worker-certificates: - image: appwrite/appwrite:1.7.4 - entrypoint: worker-certificates - container_name: appwrite-worker-certificates - depends_on: - - appwrite-redis - - appwrite-mariadb - volumes: - - appwrite-config:/storage/config:rw - - appwrite-certificates:/storage/certificates:rw - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_DOMAIN=${_APP_DOMAIN:-$SERVICE_FQDN_APPWRITE} - - _APP_DOMAIN_TARGET_CNAME=${_APP_DOMAIN_TARGET_CNAME} - - _APP_DOMAIN_TARGET_AAAA=${_APP_DOMAIN_TARGET_AAAA} - - _APP_DOMAIN_TARGET_A=${_APP_DOMAIN_TARGET_A} - - _APP_DOMAIN_TARGET_CAA=${_APP_DOMAIN_TARGET_CAA} - - _APP_DOMAIN_FUNCTIONS=${_APP_DOMAIN_FUNCTIONS:-functions.$SERVICE_FQDN_APPWRITE} - - _APP_DNS=${_APP_DNS} - - _APP_EMAIL_CERTIFICATES=${_APP_EMAIL_CERTIFICATES:-enabled} - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - - _APP_DATABASE_SHARED_TABLES=${_APP_DATABASE_SHARED_TABLES} - healthcheck: - test: ["CMD-SHELL", "ps aux | grep -q '[w]orker-certificates' || exit 1"] - interval: 20s - timeout: 5s - retries: 3 - - appwrite-worker-functions: - image: appwrite/appwrite:1.7.4 - entrypoint: worker-functions - container_name: appwrite-worker-functions - depends_on: - - appwrite-redis - - appwrite-mariadb - - openruntimes-executor - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_DOMAIN=${_APP_DOMAIN:-$SERVICE_FQDN_APPWRITE} - - _APP_OPTIONS_FORCE_HTTPS=${_APP_OPTIONS_FORCE_HTTPS:-disabled} - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_FUNCTIONS_TIMEOUT=${_APP_FUNCTIONS_TIMEOUT:-900} - - _APP_SITES_TIMEOUT=${_APP_SITES_TIMEOUT:-900} - - _APP_COMPUTE_BUILD_TIMEOUT=${_APP_COMPUTE_BUILD_TIMEOUT:-900} - - _APP_COMPUTE_CPUS=${_APP_COMPUTE_CPUS:-0} - - _APP_COMPUTE_MEMORY=${_APP_COMPUTE_MEMORY:-0} - - _APP_EXECUTOR_SECRET=$SERVICE_PASSWORD_64_APPWRITE - - _APP_EXECUTOR_HOST=${_APP_EXECUTOR_HOST:-http://appwrite-executor/v1} - - _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled} - - _APP_DOCKER_HUB_USERNAME=${_APP_DOCKER_HUB_USERNAME} - - _APP_DOCKER_HUB_PASSWORD=${_APP_DOCKER_HUB_PASSWORD} - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - - _APP_LOGGING_PROVIDER=${_APP_LOGGING_PROVIDER} - - _APP_DATABASE_SHARED_TABLES=${_APP_DATABASE_SHARED_TABLES} - healthcheck: - test: ["CMD-SHELL", "ps aux | grep -q '[w]orker-functions' || exit 1"] - interval: 20s - timeout: 5s - retries: 3 - - appwrite-worker-mails: - image: appwrite/appwrite:1.7.4 - entrypoint: worker-mails - container_name: appwrite-worker-mails - depends_on: - - appwrite-redis - - appwrite-mariadb - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE + - _APP_VCS_GITEA_ENDPOINT=${_APP_VCS_GITEA_ENDPOINT} + - _APP_VCS_GITEA_BROWSER_ENDPOINT=${_APP_VCS_GITEA_BROWSER_ENDPOINT} + - _APP_VCS_GITEA_CLIENT_ID=${_APP_VCS_GITEA_CLIENT_ID} + - _APP_VCS_GITEA_CLIENT_SECRET=${_APP_VCS_GITEA_CLIENT_SECRET} + - _APP_VCS_GITEA_WEBHOOK_SECRET=${_APP_VCS_GITEA_WEBHOOK_SECRET} + - _APP_VCS_GITLAB_ENDPOINT=${_APP_VCS_GITLAB_ENDPOINT} + - _APP_VCS_GITLAB_CLIENT_ID=${_APP_VCS_GITLAB_CLIENT_ID} + - _APP_VCS_GITLAB_CLIENT_SECRET=${_APP_VCS_GITLAB_CLIENT_SECRET} + - _APP_VCS_GITLAB_WEBHOOK_SECRET=${_APP_VCS_GITLAB_WEBHOOK_SECRET} + - _APP_VCS_BITBUCKET_CLIENT_ID=${_APP_VCS_BITBUCKET_CLIENT_ID} + - _APP_VCS_BITBUCKET_CLIENT_SECRET=${_APP_VCS_BITBUCKET_CLIENT_SECRET} + - _APP_VCS_BITBUCKET_WEBHOOK_SECRET=${_APP_VCS_BITBUCKET_WEBHOOK_SECRET} + - _APP_VCS_ORIGIN_CLIENT_ID=${_APP_VCS_ORIGIN_CLIENT_ID} + - _APP_VCS_ORIGIN_PRIVATE_KEY=${_APP_VCS_ORIGIN_PRIVATE_KEY} + - _APP_VCS_WEBHOOK_URL=${_APP_VCS_WEBHOOK_URL} + - _APP_BUILDS_VOLUME=${COMPOSE_PROJECT_NAME}_appwrite-builds + - _APP_JOBS_HOST=${_APP_JOBS_HOST:-http://orchestrator:8080} + - _APP_JOBS_SECRET=$SERVICE_PASSWORD_64_JOBS + - _APP_JOBS_ENDPOINT=${_APP_JOBS_ENDPOINT:-http://appwrite} + - _APP_BROWSER_HOST=${_APP_BROWSER_HOST:-http://appwrite-browser:3000/v1} + - _APP_WORKER_SCREENSHOTS_ROUTER=${_APP_WORKER_SCREENSHOTS_ROUTER:-http://appwrite} + - _APP_NOTIFICATIONS_TRACKING_SECRET=$SERVICE_PASSWORD_64_NOTIFICATIONS - _APP_SYSTEM_EMAIL_NAME=${_APP_SYSTEM_EMAIL_NAME:-Appwrite} - - _APP_SYSTEM_EMAIL_ADDRESS=${_APP_SYSTEM_EMAIL_ADDRESS:-team@appwrite.io} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} + - _APP_SYSTEM_EMAIL_ADDRESS=${_APP_SYSTEM_EMAIL_ADDRESS:-noreply@appwrite.io} - _APP_SMTP_HOST=${_APP_SMTP_HOST} - _APP_SMTP_PORT=${_APP_SMTP_PORT} - _APP_SMTP_SECURE=${_APP_SMTP_SECURE} - _APP_SMTP_USERNAME=${_APP_SMTP_USERNAME} - _APP_SMTP_PASSWORD=${_APP_SMTP_PASSWORD} - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - - _APP_DOMAIN=${_APP_DOMAIN:-$SERVICE_FQDN_APPWRITE} - - _APP_OPTIONS_FORCE_HTTPS=${_APP_OPTIONS_FORCE_HTTPS:-disabled} - - _APP_DATABASE_SHARED_TABLES=${_APP_DATABASE_SHARED_TABLES} - healthcheck: - test: ["CMD-SHELL", "ps aux | grep -q '[w]orker-mails' || exit 1"] - interval: 20s - timeout: 5s - retries: 3 - - - appwrite-worker-messaging: - image: appwrite/appwrite:1.7.4 - entrypoint: worker-messaging - container_name: appwrite-worker-messaging - volumes: - - appwrite-uploads:/storage/uploads:rw - depends_on: - - appwrite-redis - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - _APP_SMS_FROM=${_APP_SMS_FROM} - _APP_SMS_PROVIDER=${_APP_SMS_PROVIDER} - _APP_SMS_PROJECTS_DENY_LIST=${_APP_SMS_PROJECTS_DENY_LIST} - - _APP_STORAGE_DEVICE=${_APP_STORAGE_DEVICE:-local} - - _APP_STORAGE_S3_ACCESS_KEY=${_APP_STORAGE_S3_ACCESS_KEY} - - _APP_STORAGE_S3_SECRET=${_APP_STORAGE_S3_SECRET} - - _APP_STORAGE_S3_REGION=${_APP_STORAGE_S3_REGION:-us-east-1} - - _APP_STORAGE_S3_BUCKET=${_APP_STORAGE_S3_BUCKET} - - _APP_STORAGE_S3_ENDPOINT=${_APP_STORAGE_S3_ENDPOINT} - - _APP_STORAGE_DO_SPACES_ACCESS_KEY=${_APP_STORAGE_DO_SPACES_ACCESS_KEY} - - _APP_STORAGE_DO_SPACES_SECRET=${_APP_STORAGE_DO_SPACES_SECRET} - - _APP_STORAGE_DO_SPACES_REGION=${_APP_STORAGE_DO_SPACES_REGION:-us-east-1} - - _APP_STORAGE_DO_SPACES_BUCKET=${_APP_STORAGE_DO_SPACES_BUCKET} - - _APP_STORAGE_BACKBLAZE_ACCESS_KEY=${_APP_STORAGE_BACKBLAZE_ACCESS_KEY} - - _APP_STORAGE_BACKBLAZE_SECRET=${_APP_STORAGE_BACKBLAZE_SECRET} - - _APP_STORAGE_BACKBLAZE_REGION=${_APP_STORAGE_BACKBLAZE_REGION:-us-west-004} - - _APP_STORAGE_BACKBLAZE_BUCKET=${_APP_STORAGE_BACKBLAZE_BUCKET} - - _APP_STORAGE_LINODE_ACCESS_KEY=${_APP_STORAGE_LINODE_ACCESS_KEY} - - _APP_STORAGE_LINODE_SECRET=${_APP_STORAGE_LINODE_SECRET} - - _APP_STORAGE_LINODE_REGION=${_APP_STORAGE_LINODE_REGION:-eu-central-1} - - _APP_STORAGE_LINODE_BUCKET=${_APP_STORAGE_LINODE_BUCKET} - - _APP_STORAGE_WASABI_ACCESS_KEY=${_APP_STORAGE_WASABI_ACCESS_KEY} - - _APP_STORAGE_WASABI_SECRET=${_APP_STORAGE_WASABI_SECRET} - - _APP_STORAGE_WASABI_REGION=${_APP_STORAGE_WASABI_REGION:-eu-central-1} - - _APP_STORAGE_WASABI_BUCKET=${_APP_STORAGE_WASABI_BUCKET} - - _APP_DATABASE_SHARED_TABLES=${_APP_DATABASE_SHARED_TABLES} + - _APP_MIGRATIONS_FIREBASE_CLIENT_ID=${_APP_MIGRATIONS_FIREBASE_CLIENT_ID} + - _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET=${_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET} + - _APP_MIGRATION_HOST=${_APP_MIGRATION_HOST:-appwrite} + - _APP_MAINTENANCE_RETENTION_AUDIT=${_APP_MAINTENANCE_RETENTION_AUDIT:-1209600} + - _APP_MAINTENANCE_RETENTION_AUDIT_CONSOLE=${_APP_MAINTENANCE_RETENTION_AUDIT_CONSOLE} + - _APP_LIMIT_DATABASE_BATCH=${_APP_LIMIT_DATABASE_BATCH:-100} + - _APP_DOCUMENTSDB=${_APP_DOCUMENTSDB:-disabled} + - _APP_VECTORSDB=${_APP_VECTORSDB:-disabled} + - _APP_EMBEDDING=${_APP_EMBEDDING:-disabled} + volumes: + - appwrite-uploads:/storage/uploads:rw + - appwrite-imports:/storage/imports:rw + - appwrite-cache:/storage/cache:rw + - appwrite-config:/storage/config:rw + - appwrite-certificates:/storage/certificates:rw + - appwrite-functions:/storage/functions:rw + - appwrite-sites:/storage/sites:rw + - appwrite-builds:/storage/builds:rw + depends_on: + appwrite-postgresql: + condition: service_healthy + appwrite-redis: + condition: service_healthy + appwrite-clickhouse: + condition: service_healthy + openruntimes-executor: + condition: service_healthy + orchestrator: + condition: service_healthy healthcheck: - test: ["CMD-SHELL", "ps aux | grep -q '[w]orker-messaging' || exit 1"] + test: ["CMD-SHELL", "ps aux | grep -q '[p]hp' || exit 1"] interval: 20s timeout: 5s retries: 3 - - appwrite-worker-migrations: - image: appwrite/appwrite:1.7.4 - entrypoint: worker-migrations - container_name: appwrite-worker-migrations - volumes: - - appwrite-imports:/storage/imports:rw - depends_on: - - appwrite-mariadb + + appwrite-task-scheduler: + image: appwrite/appwrite:2.0.0 + entrypoint: schedule environment: - _APP_ENV=${_APP_ENV:-production} + - _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled} + - _APP_USAGE_PASS=$SERVICE_PASSWORD_CLICKHOUSE + - _APP_CONNECTIONS_DB_USAGE=http://appwrite:$SERVICE_PASSWORD_CLICKHOUSE@appwrite-clickhouse:8123/appwrite + - _APP_POOL_SIZE_USAGE=${_APP_POOL_SIZE_USAGE:-2} + - _APP_EXECUTIONS_DUAL_WRITE=${_APP_EXECUTIONS_DUAL_WRITE:-enabled} + - _APP_CONNECTIONS_DB_EXECUTIONS=http://appwrite:$SERVICE_PASSWORD_CLICKHOUSE@appwrite-clickhouse:8123/appwrite + - _APP_POOL_SIZE_EXECUTIONS=${_APP_POOL_SIZE_EXECUTIONS:-2} + - _APP_MAINTENANCE_RETENTION_USAGE_TTL=${_APP_MAINTENANCE_RETENTION_USAGE_TTL:-180} + - _APP_STATS_USAGE_QUEUE_NAME=${_APP_STATS_USAGE_QUEUE_NAME:-v1-stats-usage} + - _APP_STATS_RESOURCES_QUEUE_NAME=${_APP_STATS_RESOURCES_QUEUE_NAME:-v1-stats-resources} + - _APP_STATS_RESOURCES_INTERVAL=${_APP_STATS_RESOURCES_INTERVAL:-3600} + - _APP_LOGGING_FORMAT=${_APP_LOGGING_FORMAT:-pretty} + - _APP_WORKER_MAX_COROUTINES=8 - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} + - _APP_POOL_ADAPTER=${_APP_POOL_ADAPTER:-stack} - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE + - _APP_OPTIONS_FORCE_HTTPS=${_APP_OPTIONS_FORCE_HTTPS:-enabled} - _APP_DOMAIN=${_APP_DOMAIN:-$SERVICE_FQDN_APPWRITE} - - _APP_DOMAIN_TARGET_CNAME=${_APP_DOMAIN_TARGET_CNAME} - - _APP_DOMAIN_TARGET_AAAA=${_APP_DOMAIN_TARGET_AAAA} - - _APP_DOMAIN_TARGET_A=${_APP_DOMAIN_TARGET_A} - - _APP_DOMAIN_TARGET_CAA=${_APP_DOMAIN_TARGET_CAA} - - _APP_DNS=${_APP_DNS} - - _APP_EMAIL_SECURITY=${_APP_EMAIL_SECURITY:-certs@appwrite.io} + - _APP_CONSOLE_DOMAIN=${_APP_CONSOLE_DOMAIN} + - _APP_CONSOLE_SCHEMA=${_APP_CONSOLE_SCHEMA:-appwriteio} + - _APP_DOMAIN_FUNCTIONS=${_APP_DOMAIN_FUNCTIONS:-functions.$SERVICE_FQDN_APPWRITE} + - _APP_DOMAIN_SITES=${_APP_DOMAIN_SITES:-sites.$SERVICE_FQDN_APPWRITE} + - _APP_MIGRATION_HOST=${_APP_MIGRATION_HOST:-appwrite} - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - _APP_REDIS_USER=${_APP_REDIS_USER} - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} + - _APP_DB_ADAPTER=${_APP_DB_ADAPTER:-postgresql} + - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-postgresql} + - _APP_DB_PORT=${_APP_DB_PORT:-5432} - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - - _APP_MIGRATIONS_FIREBASE_CLIENT_ID=${_APP_MIGRATIONS_FIREBASE_CLIENT_ID} - - _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET=${_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET} + - _APP_DB_USER=$SERVICE_USER_POSTGRES + - _APP_DB_PASS=$SERVICE_PASSWORD_POSTGRES - _APP_DATABASE_SHARED_TABLES=${_APP_DATABASE_SHARED_TABLES} - exclude_from_hc: true + - _APP_FUNCTIONS_SCHEDULE_SPREAD=${_APP_FUNCTIONS_SCHEDULE_SPREAD:-0} + depends_on: + appwrite-postgresql: + condition: service_healthy + appwrite-redis: + condition: service_healthy + healthcheck: + test: ["CMD-SHELL", "ps aux | grep -q '[p]hp' || exit 1"] + interval: 20s + timeout: 5s + retries: 3 appwrite-task-maintenance: - image: appwrite/appwrite:1.7.4 + image: appwrite/appwrite:2.0.0 entrypoint: maintenance - container_name: appwrite-task-maintenance - depends_on: - - appwrite-redis environment: - _APP_ENV=${_APP_ENV:-production} + - _APP_LOGGING_FORMAT=${_APP_LOGGING_FORMAT:-pretty} - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} + - _APP_POOL_ADAPTER=${_APP_POOL_ADAPTER:-stack} - _APP_DOMAIN=${_APP_DOMAIN:-$SERVICE_FQDN_APPWRITE} - - _APP_DOMAIN_TARGET_CNAME=${_APP_DOMAIN_TARGET_CNAME} - - _APP_DOMAIN_TARGET_AAAA=${_APP_DOMAIN_TARGET_AAAA} - - _APP_DOMAIN_TARGET_A=${_APP_DOMAIN_TARGET_A} + - _APP_DOMAIN_TARGET_CNAME=${_APP_DOMAIN_TARGET_CNAME:-localhost} + - _APP_DOMAIN_TARGET_AAAA=${_APP_DOMAIN_TARGET_AAAA:-::1} + - _APP_DOMAIN_TARGET_A=${_APP_DOMAIN_TARGET_A:-127.0.0.1} - _APP_DOMAIN_TARGET_CAA=${_APP_DOMAIN_TARGET_CAA} - - _APP_DOMAIN_FUNCTIONS=${_APP_DOMAIN_FUNCTIONS:-functions.$SERVICE_FQDN_APPWRITE} - _APP_DNS=${_APP_DNS} + - _APP_DOMAIN_FUNCTIONS=${_APP_DOMAIN_FUNCTIONS:-functions.$SERVICE_FQDN_APPWRITE} + - _APP_EDITION=${_APP_EDITION:-self-hosted} + - _APP_ROUTER_AUTO_CERTIFICATES=${_APP_ROUTER_AUTO_CERTIFICATES:-disabled} - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - _APP_REDIS_USER=${_APP_REDIS_USER} - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} + - _APP_DB_ADAPTER=${_APP_DB_ADAPTER:-postgresql} + - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-postgresql} + - _APP_DB_PORT=${_APP_DB_PORT:-5432} - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB + - _APP_DB_USER=$SERVICE_USER_POSTGRES + - _APP_DB_PASS=$SERVICE_PASSWORD_POSTGRES - _APP_MAINTENANCE_INTERVAL=${_APP_MAINTENANCE_INTERVAL:-86400} - _APP_MAINTENANCE_RETENTION_EXECUTION=${_APP_MAINTENANCE_RETENTION_EXECUTION:-1209600} - _APP_MAINTENANCE_RETENTION_CACHE=${_APP_MAINTENANCE_RETENTION_CACHE:-2592000} @@ -658,280 +550,151 @@ services: - _APP_MAINTENANCE_RETENTION_SCHEDULES=${_APP_MAINTENANCE_RETENTION_SCHEDULES:-86400} - _APP_MAINTENANCE_START_TIME=${_APP_MAINTENANCE_START_TIME} - _APP_DATABASE_SHARED_TABLES=${_APP_DATABASE_SHARED_TABLES} + depends_on: + appwrite-postgresql: + condition: service_healthy + appwrite-redis: + condition: service_healthy healthcheck: - test: ["CMD-SHELL", "ps aux | grep -q '[m]aintenance' || exit 1"] + test: ["CMD-SHELL", "ps aux | grep -q '[p]hp' || exit 1"] interval: 20s timeout: 5s retries: 3 - - appwrite-task-stats-resources: - image: appwrite/appwrite:1.7.4 - container_name: appwrite-task-stats-resources - entrypoint: stats-resources - depends_on: - - appwrite-redis - - appwrite-mariadb + appwrite-task-interval: + image: appwrite/appwrite:2.0.0 + entrypoint: interval environment: - _APP_ENV=${_APP_ENV:-production} + - _APP_LOGGING_FORMAT=${_APP_LOGGING_FORMAT:-pretty} - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} + - _APP_POOL_ADAPTER=${_APP_POOL_ADAPTER:-stack} + - _APP_DOMAIN=${_APP_DOMAIN:-$SERVICE_FQDN_APPWRITE} + - _APP_DOMAIN_TARGET_CNAME=${_APP_DOMAIN_TARGET_CNAME:-localhost} + - _APP_DOMAIN_TARGET_AAAA=${_APP_DOMAIN_TARGET_AAAA:-::1} + - _APP_DOMAIN_TARGET_A=${_APP_DOMAIN_TARGET_A:-127.0.0.1} + - _APP_DOMAIN_TARGET_CAA=${_APP_DOMAIN_TARGET_CAA} + - _APP_DNS=${_APP_DNS} + - _APP_DOMAIN_FUNCTIONS=${_APP_DOMAIN_FUNCTIONS:-functions.$SERVICE_FQDN_APPWRITE} + - _APP_DOMAIN_SITES=${_APP_DOMAIN_SITES:-sites.$SERVICE_FQDN_APPWRITE} - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - _APP_REDIS_USER=${_APP_REDIS_USER} - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled} - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} + - _APP_DB_ADAPTER=${_APP_DB_ADAPTER:-postgresql} + - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-postgresql} + - _APP_DB_PORT=${_APP_DB_PORT:-5432} + - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} + - _APP_DB_USER=$SERVICE_USER_POSTGRES + - _APP_DB_PASS=$SERVICE_PASSWORD_POSTGRES - _APP_DATABASE_SHARED_TABLES=${_APP_DATABASE_SHARED_TABLES} - - _APP_STATS_RESOURCES_INTERVAL=${_APP_STATS_RESOURCES_INTERVAL} - healthcheck: - test: ["CMD-SHELL", "ps aux | grep -q '[s]tats-resources' || exit 1"] - interval: 20s - timeout: 5s - retries: 3 - - appwrite-worker-stats-resources: - image: appwrite/appwrite:1.7.4 - entrypoint: worker-stats-resources - container_name: appwrite-worker-stats-resources + - _APP_INTERVAL_DOMAIN_VERIFICATION=${_APP_INTERVAL_DOMAIN_VERIFICATION:-120} + - _APP_INTERVAL_CLEANUP_STALE_EXECUTIONS=${_APP_INTERVAL_CLEANUP_STALE_EXECUTIONS:-300} depends_on: - - appwrite-redis - - appwrite-mariadb - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled} - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - - _APP_STATS_RESOURCES_INTERVAL=${_APP_STATS_RESOURCES_INTERVAL} + appwrite-postgresql: + condition: service_healthy + appwrite-redis: + condition: service_healthy healthcheck: - test: ["CMD-SHELL", "ps aux | grep -q '[w]orker-stats-resources' || exit 1"] + test: ["CMD-SHELL", "ps aux | grep -q '[p]hp' || exit 1"] interval: 20s timeout: 5s retries: 3 - appwrite-worker-stats-usage: - image: appwrite/appwrite:1.7.4 - entrypoint: worker-stats-usage - container_name: appwrite-worker-stats-usage - depends_on: - - appwrite-redis - - appwrite-mariadb + appwrite-geo: + image: appwrite/geo:0.3.1 environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_USAGE_STATS=${_APP_USAGE_STATS:-enabled} - - _APP_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - - _APP_USAGE_AGGREGATION_INTERVAL=${_APP_USAGE_AGGREGATION_INTERVAL:-30} - - _APP_DATABASE_SHARED_TABLES=${_APP_DATABASE_SHARED_TABLES} + - GEO_SECRET=$SERVICE_PASSWORD_64_GEO healthcheck: - test: ["CMD-SHELL", "ps aux | grep -q '[w]orker-stats-usage' || exit 1"] - interval: 20s - timeout: 5s - retries: 3 - - - appwrite-task-scheduler-functions: - image: appwrite/appwrite:1.7.4 - entrypoint: schedule-functions - container_name: appwrite-task-scheduler-functions - depends_on: - - appwrite-mariadb - - appwrite-redis - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_DATABASE_SHARED_TABLES=${_APP_DATABASE_SHARED_TABLES} - healthcheck: - test: ["CMD-SHELL", "ps aux | grep -q '[s]chedule-functi' || exit 1"] - interval: 20s - timeout: 5s - retries: 3 - - appwrite-task-scheduler-executions: - image: appwrite/appwrite:1.7.4 - entrypoint: schedule-executions - container_name: appwrite-task-scheduler-executions - depends_on: - - appwrite-mariadb - - appwrite-redis - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_DATABASE_SHARED_TABLES=${_APP_DATABASE_SHARED_TABLES} - healthcheck: - test: ["CMD-SHELL", "ps aux | grep -q '[s]chedule-execut' || exit 1"] - interval: 20s - timeout: 5s - retries: 3 - - appwrite-task-scheduler-messages: - image: appwrite/appwrite:1.7.4 - entrypoint: schedule-messages - container_name: appwrite-task-scheduler-messages - depends_on: - - appwrite-mariadb - - appwrite-redis - environment: - - _APP_ENV=${_APP_ENV:-production} - - _APP_WORKER_PER_CORE=${_APP_WORKER_PER_CORE:-6} - - _APP_OPENSSL_KEY_V1=$SERVICE_PASSWORD_64_APPWRITE - - _APP_REDIS_HOST=${_APP_REDIS_HOST:-appwrite-redis} - - _APP_REDIS_PORT=${_APP_REDIS_PORT:-6379} - - _APP_REDIS_USER=${_APP_REDIS_USER} - - _APP_REDIS_PASS=${_APP_REDIS_PASS} - - _APP_DB_HOST=${_APP_DB_HOST:-appwrite-mariadb} - - _APP_DB_PORT=${_APP_DB_PORT:-3306} - - _APP_DB_SCHEMA=${_APP_DB_SCHEMA:-appwrite} - - _APP_DB_USER=$SERVICE_USER_MARIADB - - _APP_DB_PASS=$SERVICE_PASSWORD_MARIADB - - _APP_DATABASE_SHARED_TABLES=${_APP_DATABASE_SHARED_TABLES} - healthcheck: - test: ["CMD-SHELL", "ps aux | grep -q '[s]chedule-messag' || exit 1"] + test: ["CMD-SHELL", "php -r \"exit(json_decode(file_get_contents('http://localhost/v1/health'))->status === 'ok' ? 0 : 1);\""] interval: 20s timeout: 5s retries: 3 + start_period: 10s appwrite-assistant: - image: appwrite/assistant:0.8.3 - container_name: appwrite-assistant + image: appwrite/assistant:0.8.4 environment: - _APP_ASSISTANT_OPENAI_API_KEY=${_APP_ASSISTANT_OPENAI_API_KEY} - healthcheck: - test: ["CMD-SHELL", "wget --spider -q http://127.0.0.1:3003 || exit 0"] - interval: 20s - timeout: 5s - retries: 3 + exclude_from_hc: true appwrite-browser: - image: appwrite/browser:0.2.4 - container_name: appwrite-browser - hostname: appwrite-browser - healthcheck: - test: ["CMD", "node", "-e", "import('http').then(http => http.get('http://localhost:3000', res => process.exit(0)).on('error', () => process.exit(1)))"] - interval: 20s - timeout: 5s - retries: 3 - + image: appwrite/browser:0.3.4 + exclude_from_hc: true openruntimes-executor: - container_name: openruntimes-executor - hostname: appwrite-executor + image: openruntimes/executor:0.29.0 + hostname: openruntimes-executor stop_signal: SIGINT - image: openruntimes/executor:0.8.6 - networks: - - runtimes + environment: + - OPR_EXECUTOR_IMAGES=${_APP_EXECUTOR_IMAGES:-openruntimes/node:v5-22,openruntimes/static:v5-1} + - OPR_EXECUTOR_INACTIVE_THRESHOLD=${_APP_COMPUTE_INACTIVE_THRESHOLD:-600} + - OPR_EXECUTOR_MAINTENANCE_INTERVAL=${_APP_COMPUTE_MAINTENANCE_INTERVAL:-600} + - OPR_EXECUTOR_NETWORK=${_APP_COMPUTE_RUNTIMES_NETWORK:-runtimes} + - OPR_EXECUTOR_DOCKER_HUB_USERNAME=${_APP_DOCKER_HUB_USERNAME} + - OPR_EXECUTOR_DOCKER_HUB_PASSWORD=${_APP_DOCKER_HUB_PASSWORD} + - OPR_EXECUTOR_ENV=${_APP_ENV:-production} + - OPR_EXECUTOR_RUNTIMES=${_APP_FUNCTIONS_RUNTIMES:-node-22},${_APP_SITES_RUNTIMES:-static-1,node-22} + - OPR_EXECUTOR_SECRET=$SERVICE_PASSWORD_64_EXECUTOR + - OPR_EXECUTOR_RUNTIME_VERSIONS=v5 + - OPEN_RUNTIMES_NFT=${_APP_OPEN_RUNTIMES_NFT:-enabled} + - OPR_EXECUTOR_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} + - OPR_EXECUTOR_CONNECTION_STORAGE=${_APP_EXECUTOR_CONNECTION_STORAGE:-local://localhost} + - OPR_EXECUTOR_CONNECTION_BUILD_CACHE_STORAGE= volumes: - /var/run/docker.sock:/var/run/docker.sock - appwrite-builds:/storage/builds:rw - appwrite-functions:/storage/functions:rw - appwrite-sites:/storage/sites:rw - /tmp:/tmp:rw - environment: - - OPR_EXECUTOR_IMAGE_PULL=disabled - - OPR_EXECUTOR_INACTIVE_TRESHOLD=${_APP_COMPUTE_INACTIVE_THRESHOLD} - - OPR_EXECUTOR_MAINTENANCE_INTERVAL=${_APP_COMPUTE_MAINTENANCE_INTERVAL} - - OPR_EXECUTOR_NETWORK=${_APP_COMPUTE_RUNTIMES_NETWORK:-runtimes} - - OPR_EXECUTOR_DOCKER_HUB_USERNAME=${_APP_DOCKER_HUB_USERNAME} - - OPR_EXECUTOR_DOCKER_HUB_PASSWORD=${_APP_DOCKER_HUB_PASSWORD} - - OPR_EXECUTOR_ENV=${_APP_ENV:-production} - - OPR_EXECUTOR_RUNTIMES=${_APP_FUNCTIONS_RUNTIMES},${_APP_SITES_RUNTIMES} - - OPR_EXECUTOR_SECRET=$SERVICE_PASSWORD_64_APPWRITE - - OPR_EXECUTOR_RUNTIME_VERSIONS=v5 - - OPR_EXECUTOR_LOGGING_CONFIG=${_APP_LOGGING_CONFIG} - - OPR_EXECUTOR_STORAGE_DEVICE=${_APP_STORAGE_DEVICE:-local} - - OPR_EXECUTOR_STORAGE_S3_ACCESS_KEY=${_APP_STORAGE_S3_ACCESS_KEY} - - OPR_EXECUTOR_STORAGE_S3_SECRET=${_APP_STORAGE_S3_SECRET} - - OPR_EXECUTOR_STORAGE_S3_REGION=${_APP_STORAGE_S3_REGION} - - OPR_EXECUTOR_STORAGE_S3_BUCKET=${_APP_STORAGE_S3_BUCKET} - - OPR_EXECUTOR_STORAGE_S3_ENDPOINT=${_APP_STORAGE_S3_ENDPOINT} - - OPR_EXECUTOR_STORAGE_DO_SPACES_ACCESS_KEY=${_APP_STORAGE_DO_SPACES_ACCESS_KEY} - - OPR_EXECUTOR_STORAGE_DO_SPACES_SECRET=${_APP_STORAGE_DO_SPACES_SECRET} - - OPR_EXECUTOR_STORAGE_DO_SPACES_REGION=${_APP_STORAGE_DO_SPACES_REGION} - - OPR_EXECUTOR_STORAGE_DO_SPACES_BUCKET=${_APP_STORAGE_DO_SPACES_BUCKET} - - OPR_EXECUTOR_STORAGE_BACKBLAZE_ACCESS_KEY=${_APP_STORAGE_BACKBLAZE_ACCESS_KEY} - - OPR_EXECUTOR_STORAGE_BACKBLAZE_SECRET=${_APP_STORAGE_BACKBLAZE_SECRET} - - OPR_EXECUTOR_STORAGE_BACKBLAZE_REGION=${_APP_STORAGE_BACKBLAZE_REGION} - - OPR_EXECUTOR_STORAGE_BACKBLAZE_BUCKET=${_APP_STORAGE_BACKBLAZE_BUCKET} - - OPR_EXECUTOR_STORAGE_LINODE_ACCESS_KEY=${_APP_STORAGE_LINODE_ACCESS_KEY} - - OPR_EXECUTOR_STORAGE_LINODE_SECRET=${_APP_STORAGE_LINODE_SECRET} - - OPR_EXECUTOR_STORAGE_LINODE_REGION=${_APP_STORAGE_LINODE_REGION} - - OPR_EXECUTOR_STORAGE_LINODE_BUCKET=${_APP_STORAGE_LINODE_BUCKET} - - OPR_EXECUTOR_STORAGE_WASABI_ACCESS_KEY=${_APP_STORAGE_WASABI_ACCESS_KEY} - - OPR_EXECUTOR_STORAGE_WASABI_SECRET=${_APP_STORAGE_WASABI_SECRET} - - OPR_EXECUTOR_STORAGE_WASABI_REGION=${_APP_STORAGE_WASABI_REGION} - - OPR_EXECUTOR_STORAGE_WASABI_BUCKET=${_APP_STORAGE_WASABI_BUCKET} - - appwrite-mariadb: - image: mariadb:10.11 - container_name: appwrite-mariadb - volumes: - - appwrite-mariadb:/var/lib/mysql:rw - environment: - - MYSQL_ROOT_PASSWORD=$SERVICE_PASSWORD_MARIADBROOT - - MYSQL_DATABASE=${_APP_DB_SCHEMA:-appwrite} - - MYSQL_USER=$SERVICE_USER_MARIADB - - MYSQL_PASSWORD=$SERVICE_PASSWORD_MARIADB - - MARIADB_AUTO_UPGRADE=1 - command: 'mysqld --innodb-flush-method=fsync' healthcheck: - test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"] + test: ["CMD-SHELL", "curl -fsS -H \"Authorization: Bearer $$OPR_EXECUTOR_SECRET\" http://localhost/v1/health > /dev/null || exit 1"] interval: 20s - timeout: 10s - retries: 5 + timeout: 5s + retries: 3 + start_period: 10s + + orchestrator: + image: ghcr.io/open-runtimes/orchestrator/orchestrator:2.0.1 + hostname: orchestrator + user: root + environment: + - ORCHESTRATOR_BACKEND=docker + - ORCHESTRATOR_NETWORK=${COMPOSE_PROJECT_NAME} + - DOCKER_NETWORK=${COMPOSE_PROJECT_NAME} + - ARTIFACT_ENDPOINT=http://orchestrator:8080 + - S3_ENDPOINT=${_APP_STORAGE_S3_ENDPOINT} + - S3_REGION=${_APP_STORAGE_S3_REGION:-us-east-1} + - S3_ACCESS_KEY_ID=${_APP_STORAGE_S3_ACCESS_KEY} + - S3_SECRET_ACCESS_KEY=${_APP_STORAGE_S3_SECRET} + volumes: + - /var/run/docker.sock:/var/run/docker.sock + healthcheck: + test: ["CMD", "/ko-app/orchestrator", "-check-ready"] + interval: 20s + timeout: 5s + retries: 3 + start_period: 10s + + appwrite-postgresql: + image: appwrite/postgres:0.1.0 + environment: + - POSTGRES_DB=${_APP_DB_SCHEMA:-appwrite} + - POSTGRES_USER=$SERVICE_USER_POSTGRES + - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES + volumes: + - appwrite-postgresql:/var/lib/postgresql:rw + healthcheck: + test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] + interval: 10s + timeout: 5s + retries: 10 + start_period: 10s appwrite-redis: - image: redis:7.2.4-alpine - container_name: appwrite-redis - command: > - redis-server - --maxmemory 512mb - --maxmemory-policy allkeys-lru - --maxmemory-samples 5 + image: redis:7.4.7-alpine + command: redis-server --maxmemory 512mb --maxmemory-policy allkeys-lru --maxmemory-samples 5 volumes: - appwrite-redis:/data:rw healthcheck: @@ -940,6 +703,22 @@ services: timeout: 10s retries: 5 -networks: - runtimes: - name: runtimes \ No newline at end of file + appwrite-clickhouse: + image: clickhouse/clickhouse-server:26.4.3-alpine + environment: + - CLICKHOUSE_DB=appwrite + - CLICKHOUSE_USER=appwrite + - CLICKHOUSE_PASSWORD=$SERVICE_PASSWORD_CLICKHOUSE + - CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1 + volumes: + - appwrite-clickhouse:/var/lib/clickhouse:rw + ulimits: + nofile: + soft: 262144 + hard: 262144 + healthcheck: + test: ["CMD-SHELL", "clickhouse-client --user \"$$CLICKHOUSE_USER\" --password \"$$CLICKHOUSE_PASSWORD\" --query \"SELECT 1\" > /dev/null || exit 1"] + interval: 10s + timeout: 5s + retries: 20 + start_period: 30s