Repository navigation
Expand file tree
/
Copy pathdocker-compose.example.yml
More file actions
117 lines (113 loc) · 4.54 KB
/
Copy pathdocker-compose.example.yml
File metadata and controls
117 lines (113 loc) · 4.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
services:
postgres:
image: pgvector/pgvector:pg16
pull_policy: missing
environment:
POSTGRES_DB: ${POSTGRES_DB:-app}
POSTGRES_USER: ${POSTGRES_USER:-postgres}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-livart_postgres_change_me}
volumes:
- livart-postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_DB:-app}"]
interval: 10s
timeout: 5s
retries: 12
restart: unless-stopped
rabbitmq:
image: rabbitmq:3.13-management-alpine
pull_policy: missing
environment:
RABBITMQ_DEFAULT_USER: ${RABBITMQ_DEFAULT_USER:-livart}
RABBITMQ_DEFAULT_PASS: ${RABBITMQ_DEFAULT_PASS:-livart_rabbit_change_me}
volumes:
- livart-rabbitmq-data:/var/lib/rabbitmq
healthcheck:
test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"]
interval: 10s
timeout: 5s
retries: 12
restart: unless-stopped
minio:
image: minio/minio:latest
pull_policy: missing
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-livartminio}
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-livart_minio_change_me}
volumes:
- livart-minio-data:/data
ports:
- "127.0.0.1:${MINIO_CONSOLE_PORT:-9001}:9001"
restart: unless-stopped
livart:
build:
context: .
dockerfile: Dockerfile
image: livart:latest
depends_on:
postgres:
condition: service_healthy
rabbitmq:
condition: service_healthy
minio:
condition: service_started
ports:
- "${LIVART_PORT:-8080}:8080"
environment:
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE:-prod}
SERVER_PORT: 8080
DB_HOST: postgres
DB_PORT: 5432
DB_NAME: ${POSTGRES_DB:-app}
DB_USER: ${POSTGRES_USER:-postgres}
DB_PASSWORD: ${POSTGRES_PASSWORD:-livart_postgres_change_me}
RABBITMQ_HOST: rabbitmq
RABBITMQ_PORT: ${RABBITMQ_PORT:-5672}
RABBITMQ_USER: ${RABBITMQ_DEFAULT_USER:-livart}
RABBITMQ_PASSWORD: ${RABBITMQ_DEFAULT_PASS:-livart_rabbit_change_me}
MINIO_ENDPOINT: http://minio:9000
MINIO_ACCESS_KEY: ${MINIO_ROOT_USER:-livartminio}
MINIO_SECRET_KEY: ${MINIO_ROOT_PASSWORD:-livart_minio_change_me}
MINIO_BUCKET: ${MINIO_BUCKET:-livart}
JWT_SECRET: ${JWT_SECRET:-livart-docker-dev-jwt-secret-change-me-at-least-32-bytes}
JWT_TTL_DAYS: ${JWT_TTL_DAYS:-30}
CORS_ALLOWED_ORIGINS: ${CORS_ALLOWED_ORIGINS:-http://localhost:8080,http://127.0.0.1:8080}
LIVART_DEFAULT_API_BASE_URL: ${LIVART_DEFAULT_API_BASE_URL:-}
LIVART_DEFAULT_API_KEY: ${LIVART_DEFAULT_API_KEY:-}
LIVART_DEFAULT_IMAGE_MODEL: ${LIVART_DEFAULT_IMAGE_MODEL:-gpt-image-2}
LIVART_DEFAULT_CHAT_MODEL: ${LIVART_DEFAULT_CHAT_MODEL:-gpt-5.5}
LIVART_KNOWLEDGE_EMBEDDING_BASE_URL: ${LIVART_KNOWLEDGE_EMBEDDING_BASE_URL:-https://api.siliconflow.cn/v1}
LIVART_KNOWLEDGE_EMBEDDING_API_KEY: ${LIVART_KNOWLEDGE_EMBEDDING_API_KEY:-}
LIVART_KNOWLEDGE_EMBEDDING_MODEL: ${LIVART_KNOWLEDGE_EMBEDDING_MODEL:-BAAI/bge-m3}
LIVART_DEFAULT_IMAGE_SIZE_ENABLED: ${LIVART_DEFAULT_IMAGE_SIZE_ENABLED:-true}
LIVART_DEFAULT_IMAGE_LONG_SIDE: ${LIVART_DEFAULT_IMAGE_LONG_SIDE:-2048}
LIVART_IMAGE_JOB_WORKER_COUNT: ${LIVART_IMAGE_JOB_WORKER_COUNT:-16}
LIVART_EXTERNAL_IMAGES_ENDPOINT: ${LIVART_EXTERNAL_IMAGES_ENDPOINT:-https://gogotool.top/api/v1/external/images}
LIVART_EXTERNAL_IMAGES_API_KEY: ${LIVART_EXTERNAL_IMAGES_API_KEY:-}
LIVART_EXTERNAL_IMAGES_TIMEOUT_SECONDS: ${LIVART_EXTERNAL_IMAGES_TIMEOUT_SECONDS:-45}
CANVAS_SAVE_QUEUE: ${CANVAS_SAVE_QUEUE:-livart.canvas.save}
CANVAS_SAVE_DEAD_LETTER_QUEUE: ${CANVAS_SAVE_DEAD_LETTER_QUEUE:-livart.canvas.save.dead}
RABBITMQ_LISTENER_CONCURRENCY: ${RABBITMQ_LISTENER_CONCURRENCY:-3}
RABBITMQ_LISTENER_MAX_CONCURRENCY: ${RABBITMQ_LISTENER_MAX_CONCURRENCY:-6}
RABBITMQ_LISTENER_PREFETCH: ${RABBITMQ_LISTENER_PREFETCH:-1}
WAIT_TIMEOUT_SECONDS: ${WAIT_TIMEOUT_SECONDS:-120}
LOG_PATH: ${LOG_PATH:-/tmp/livart-logs}
LOG_MAX_HISTORY: ${LOG_MAX_HISTORY:-1}
LOG_TOTAL_SIZE_CAP: ${LOG_TOTAL_SIZE_CAP:-200MB}
logging:
driver: json-file
options:
max-size: "10m"
max-file: "1"
healthcheck:
test: ["CMD", "curl", "-fsS", "http://127.0.0.1:8080/api/health"]
interval: 30s
timeout: 5s
start_period: 90s
retries: 5
restart: unless-stopped
volumes:
livart-postgres-data:
livart-rabbitmq-data:
livart-minio-data: