117 lines
No EOL
3.2 KiB
YAML
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 |