cap-compose/docker-compose.coolify.yml

117 lines
No EOL
3.2 KiB
YAML

name: cap
services:
cap-web:
image: 'ghcr.io/capsoftware/cap-web:latest'
restart: unless-stopped
depends_on:
mysql:
condition: service_healthy
minio:
condition: service_healthy
environment:
SERVICE_URL_CAP_WEB_3000: ''
DATABASE_URL: 'mysql://cap:${SERVICE_PASSWORD_MYSQL}@mysql:3306/cap'
WEB_URL: '${SERVICE_URL_CAP_WEB}'
NEXTAUTH_URL: '${SERVICE_URL_CAP_WEB}'
DATABASE_ENCRYPTION_KEY: '${SERVICE_HEX_32_DATABASEENCRYPTIONKEY}'
NEXTAUTH_SECRET: '${SERVICE_HEX_32_NEXTAUTHSECRET}'
CAP_AWS_ACCESS_KEY: capadmin
CAP_AWS_SECRET_KEY: '${SERVICE_PASSWORD_MINIO}'
CAP_AWS_BUCKET: cap
CAP_AWS_REGION: us-east-1
S3_PUBLIC_ENDPOINT: '${SERVICE_URL_MINIO}'
S3_INTERNAL_ENDPOINT: 'http://minio:9000'
S3_PATH_STYLE: 'true'
RESEND_API_KEY: '${RESEND_API_KEY:-}'
RESEND_FROM_DOMAIN: '${RESEND_FROM_DOMAIN:-}'
GOOGLE_CLIENT_ID: '${GOOGLE_CLIENT_ID:-}'
GOOGLE_CLIENT_SECRET: '${GOOGLE_CLIENT_SECRET:-}'
APPLE_CLIENT_ID: '${APPLE_CLIENT_ID:-}'
APPLE_CLIENT_SECRET: '${APPLE_CLIENT_SECRET:-}'
MEDIA_SERVER_URL: 'http://media-server:3456'
MEDIA_SERVER_WEBHOOK_SECRET: '${SERVICE_HEX_32_MEDIASERVER}'
MEDIA_SERVER_WEBHOOK_URL: 'http://cap-web:3000'
healthcheck:
test:
- CMD
- wget
- '-q'
- '-O'
- /dev/null
- 'http://127.0.0.1:3000/'
interval: 30s
timeout: 10s
retries: 3
start_period: 60s
media-server:
image: 'ghcr.io/capsoftware/cap-media-server:latest'
restart: unless-stopped
environment:
PORT: 3456
MEDIA_SERVER_WEBHOOK_SECRET: '${SERVICE_HEX_32_MEDIASERVER}'
healthcheck:
test:
- CMD
- bun
- '-e'
- "fetch('http://127.0.0.1:3456/health').then((response) => process.exit(response.ok ? 0 : 1)).catch(() => process.exit(1))"
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
mysql:
image: 'mysql:8.0'
restart: unless-stopped
environment:
MYSQL_DATABASE: cap
MYSQL_USER: cap
MYSQL_PASSWORD: '${SERVICE_PASSWORD_MYSQL}'
MYSQL_ROOT_PASSWORD: '${SERVICE_PASSWORD_64_MYSQL}'
command:
- '--max_connections=1000'
- '--character-set-server=utf8mb4'
- '--collation-server=utf8mb4_unicode_ci'
volumes:
- 'cap-mysql-data:/var/lib/mysql'
healthcheck:
test:
- CMD
- mysqladmin
- ping
- '-h'
- localhost
- '-u'
- cap
- '-p${SERVICE_PASSWORD_MYSQL}'
interval: 10s
timeout: 5s
retries: 10
start_period: 30s
minio:
image: 'minio/minio:latest'
restart: unless-stopped
command: 'server /data --console-address ":9001"'
environment:
MINIO_ROOT_USER: capadmin
MINIO_ROOT_PASSWORD: '${SERVICE_PASSWORD_MINIO}'
SERVICE_URL_MINIO_9000: ''
volumes:
- 'cap-minio-data:/data'
healthcheck:
test:
- CMD
- mc
- ready
- local
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
volumes:
cap-mysql-data: null
cap-minio-data: null