Repository navigation
Expand file tree
/
Copy pathdocker-compose.yaml
More file actions
170 lines (165 loc) · 6.73 KB
/
Copy pathdocker-compose.yaml
File metadata and controls
170 lines (165 loc) · 6.73 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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
services:
postgres:
image: postgres:17-alpine
networks:
- devops-internal
environment:
POSTGRES_DB: devops
POSTGRES_USER: devops
POSTGRES_PASSWORD: devops
volumes:
- postgres-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U devops -d devops"]
interval: 5s
timeout: 3s
retries: 20
redis:
image: redis:8-alpine
networks:
- devops-internal
environment:
REDIS_PASSWORD: ${REDIS_PASSWORD:?REDIS_PASSWORD is required}
command:
- /bin/sh
- -ec
- exec redis-server --appendonly yes --requirepass "$$REDIS_PASSWORD"
healthcheck:
test: ["CMD-SHELL", "REDISCLI_AUTH=\"$$REDIS_PASSWORD\" redis-cli ping"]
interval: 5s
timeout: 3s
retries: 20
api:
image: liteyukistudio/luna-devops:${DEVOPS_IMAGE_TAG:-nightly}
networks:
- devops-internal
environment:
APP_ENV: production
API_ADDR: ":8080"
LOG_FORMAT: ${LOG_FORMAT:-auto}
LOG_COLOR: ${LOG_COLOR:-auto}
LOG_LEVEL: ${LOG_LEVEL:-info}
SECRET_ENCRYPTION_KEY: ${SECRET_ENCRYPTION_KEY:?SECRET_ENCRYPTION_KEY is required}
INITIAL_ADMIN_EMAIL: ${INITIAL_ADMIN_EMAIL:-}
INITIAL_ADMIN_NAME: ${INITIAL_ADMIN_NAME:-}
INITIAL_ADMIN_PASSWORD: ${INITIAL_ADMIN_PASSWORD:-}
INITIAL_ADMIN_LANGUAGE: ${INITIAL_ADMIN_LANGUAGE:-zh-CN}
PUBLIC_BASE_URL: ${PUBLIC_BASE_URL:?PUBLIC_BASE_URL is required}
APP_CORS_ORIGINS: ${APP_CORS_ORIGINS:-}
APP_ENABLE_HSTS: "true"
TRUSTED_PROXY_CIDRS: ${TRUSTED_PROXY_CIDRS:-}
DATABASE_URL: postgres://devops:devops@postgres:5432/devops?sslmode=disable
API_DB_MAX_OPEN_CONNS: ${API_DB_MAX_OPEN_CONNS:-20}
API_DB_MAX_IDLE_CONNS: ${API_DB_MAX_IDLE_CONNS:-5}
API_DB_CONN_MAX_LIFETIME: ${API_DB_CONN_MAX_LIFETIME:-30m}
API_DB_CONN_MAX_IDLE_TIME: ${API_DB_CONN_MAX_IDLE_TIME:-5m}
REDIS_ADDR: redis://default:${REDIS_PASSWORD:?REDIS_PASSWORD is required}@redis:6379/0
METRICS_ENABLED: ${METRICS_ENABLED:-false}
METRICS_ADDR: ${METRICS_ADDR:-:9090}
METRICS_PATH: ${METRICS_PATH:-/metrics}
OTEL_EXPORTER_OTLP_ENDPOINT: ${OTEL_EXPORTER_OTLP_ENDPOINT:-}
OTEL_RESOURCE_ATTRIBUTES: ${OTEL_RESOURCE_ATTRIBUTES:-}
OTEL_EXPORTER_OTLP_HEADERS: ${OTEL_EXPORTER_OTLP_HEADERS:-}
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT: ${OTEL_EXPORTER_OTLP_TRACES_ENDPOINT:-}
OTEL_EXPORTER_OTLP_TRACES_HEADERS: ${OTEL_EXPORTER_OTLP_TRACES_HEADERS:-}
AI_ASSISTANT_AVAILABLE: ${AI_ASSISTANT_AVAILABLE:-false}
AI_AGENT_BASE_URL: http://agent:8091
AI_AGENT_TIMEOUT: ${AI_AGENT_TIMEOUT:-10s}
AI_INTERNAL_SECRET: ${AI_INTERNAL_SECRET:-}
VOLUME_TRANSFER_MAX_BYTES: ${VOLUME_TRANSFER_MAX_BYTES:-100Gi}
VOLUME_TRANSFER_JOB_IMAGE: ${VOLUME_TRANSFER_JOB_IMAGE:-}
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
ports:
- "8088:8080"
healthcheck:
test: ["CMD-SHELL", "wget -q -O - http://127.0.0.1:8080/healthz >/dev/null"]
interval: 5s
timeout: 3s
retries: 20
start_period: 10s
worker:
image: liteyukistudio/luna-worker:${DEVOPS_IMAGE_TAG:-nightly}
networks:
- devops-internal
environment:
APP_ENV: production
LOG_FORMAT: ${LOG_FORMAT:-auto}
LOG_COLOR: ${LOG_COLOR:-auto}
LOG_LEVEL: ${LOG_LEVEL:-info}
SECRET_ENCRYPTION_KEY: ${SECRET_ENCRYPTION_KEY:?SECRET_ENCRYPTION_KEY is required}
PUBLIC_BASE_URL: ${PUBLIC_BASE_URL:?PUBLIC_BASE_URL is required}
DATABASE_URL: postgres://devops:devops@postgres:5432/devops?sslmode=disable
WORKER_DB_MAX_OPEN_CONNS: ${WORKER_DB_MAX_OPEN_CONNS:-20}
WORKER_DB_MAX_IDLE_CONNS: ${WORKER_DB_MAX_IDLE_CONNS:-5}
WORKER_DB_CONN_MAX_LIFETIME: ${WORKER_DB_CONN_MAX_LIFETIME:-30m}
WORKER_DB_CONN_MAX_IDLE_TIME: ${WORKER_DB_CONN_MAX_IDLE_TIME:-5m}
REDIS_ADDR: redis://default:${REDIS_PASSWORD:?REDIS_PASSWORD is required}@redis:6379/0
OTEL_EXPORTER_OTLP_ENDPOINT: ${OTEL_EXPORTER_OTLP_ENDPOINT:-}
OTEL_RESOURCE_ATTRIBUTES: ${OTEL_RESOURCE_ATTRIBUTES:-}
OTEL_EXPORTER_OTLP_HEADERS: ${OTEL_EXPORTER_OTLP_HEADERS:-}
BUILD_EXECUTOR_IMAGE: ${BUILD_EXECUTOR_IMAGE:-moby/buildkit:v0.34.1-rootless}
BUILD_EGRESS_MODE: ${BUILD_EGRESS_MODE:-restricted}
BUILD_JOB_TIMEOUT_SECONDS: ${BUILD_JOB_TIMEOUT_SECONDS:-1800}
BUILD_JOB_TTL_SECONDS: ${BUILD_JOB_TTL_SECONDS:-3600}
BUILD_CACHE_ENABLED: ${BUILD_CACHE_ENABLED:-false}
BUILD_CACHE_TAG: ${BUILD_CACHE_TAG:-buildcache}
BUILD_PRIVATE_EGRESS_CIDRS: ${BUILD_PRIVATE_EGRESS_CIDRS:-}
BUILD_PRIVATE_EGRESS_PORTS: ${BUILD_PRIVATE_EGRESS_PORTS:-443}
BUILD_BLOCKED_EGRESS_CIDRS: ${BUILD_BLOCKED_EGRESS_CIDRS:-}
DEPLOY_ROLLOUT_TIMEOUT_SECONDS: ${DEPLOY_ROLLOUT_TIMEOUT_SECONDS:-600}
CERT_MANAGER_CLUSTER_ISSUER: ${CERT_MANAGER_CLUSTER_ISSUER:-letsencrypt-http01}
VOLUME_TRANSFER_MAX_BYTES: ${VOLUME_TRANSFER_MAX_BYTES:-100Gi}
VOLUME_TRANSFER_JOB_IMAGE: ${VOLUME_TRANSFER_JOB_IMAGE:-}
depends_on:
api:
condition: service_healthy
postgres:
condition: service_healthy
redis:
condition: service_healthy
agent:
profiles: ["ai"]
image: liteyukistudio/luna-agent:${DEVOPS_IMAGE_TAG:-nightly}
networks:
- devops-internal
environment:
NODE_ENV: production
HOST: 0.0.0.0
PORT: "8091"
LOG_FORMAT: ${LOG_FORMAT:-auto}
LOG_COLOR: ${LOG_COLOR:-auto}
LOG_LEVEL: ${LOG_LEVEL:-info}
DATABASE_URL: postgres://devops:devops@postgres:5432/devops?sslmode=disable
AI_DATABASE_MAX_CONNECTIONS: ${AI_DATABASE_MAX_CONNECTIONS:-10}
AI_DATABASE_CONNECTION_TIMEOUT_MS: ${AI_DATABASE_CONNECTION_TIMEOUT_MS:-5000}
AI_DATABASE_STATEMENT_TIMEOUT_MS: ${AI_DATABASE_STATEMENT_TIMEOUT_MS:-15000}
AUTH_MODE: bff-hmac
AI_INTERNAL_SECRET: ${AI_INTERNAL_SECRET:-}
LUNA_API_BASE_URL: http://api:8080
OTEL_EXPORTER_OTLP_ENDPOINT: ${OTEL_EXPORTER_OTLP_ENDPOINT:-}
OTEL_RESOURCE_ATTRIBUTES: ${OTEL_RESOURCE_ATTRIBUTES:-}
OTEL_EXPORTER_OTLP_HEADERS: ${OTEL_EXPORTER_OTLP_HEADERS:-}
OTEL_SERVICE_VERSION: ${DEVOPS_IMAGE_TAG:-nightly}
AI_OBSERVABILITY_CAPTURE_CONTENT: ${AI_OBSERVABILITY_CAPTURE_CONTENT:-false}
AI_OBSERVABILITY_CAPTURE_DATABASE_SPANS: ${AI_OBSERVABILITY_CAPTURE_DATABASE_SPANS:-false}
depends_on:
api:
condition: service_healthy
postgres:
condition: service_healthy
expose:
- "8091"
healthcheck:
test: ["CMD-SHELL", "wget -q -O - http://127.0.0.1:8091/internal/health/ready >/dev/null"]
interval: 5s
timeout: 3s
retries: 20
start_period: 10s
volumes:
postgres-data:
networks:
devops-internal: