|
1 | 1 | version: "3.11" |
| 2 | +x-sentry-env: &sentry_env |
| 3 | + SENTRY_SECRET_KEY: ${SENTRY_SECRET_KEY:-change-me} |
| 4 | + SENTRY_SINGLE_ORGANIZATION: ${SENTRY_SINGLE_ORGANIZATION:-1} |
| 5 | + SENTRY_EVENT_RETENTION_DAYS: ${SENTRY_EVENT_RETENTION_DAYS:-30} |
| 6 | + SENTRY_POSTGRES_HOST: sentry-postgres |
| 7 | + SENTRY_DB_NAME: ${SENTRY_DB_NAME:-sentry} |
| 8 | + SENTRY_DB_USER: ${SENTRY_DB_USER:-sentry} |
| 9 | + SENTRY_DB_PASSWORD: ${SENTRY_DB_PASS:-sentry} |
| 10 | + SENTRY_REDIS_HOST: sentry-redis |
| 11 | + SENTRY_REDIS_PORT: 6379 |
| 12 | + SENTRY_SERVER_EMAIL: ${SENTRY_SERVER_EMAIL:-sentry@localhost} |
| 13 | + SENTRY_EMAIL_HOST: ${SENTRY_SMTP_HOST:-} |
| 14 | + SENTRY_EMAIL_PORT: ${SENTRY_SMTP_PORT:-587} |
| 15 | + SENTRY_EMAIL_USER: ${SENTRY_SMTP_USER:-} |
| 16 | + SENTRY_EMAIL_PASSWORD: ${SENTRY_SMTP_PASS:-} |
| 17 | + SENTRY_EMAIL_USE_TLS: ${SENTRY_SMTP_USE_TLS:-true} |
| 18 | + |
2 | 19 | services: |
3 | 20 | s3: |
4 | 21 | image: minio/minio:latest |
@@ -172,3 +189,75 @@ services: |
172 | 189 | depends_on: |
173 | 190 | - prometheus |
174 | 191 | - loki |
| 192 | + |
| 193 | + # ========================================================================== |
| 194 | + # SENTRY - Error aggregation, triage UI and alerting |
| 195 | + # ========================================================================== |
| 196 | + sentry-redis: |
| 197 | + image: redis:7.4-alpine |
| 198 | + container_name: base-sentry-redis |
| 199 | + restart: unless-stopped |
| 200 | + volumes: |
| 201 | + - ${DATA_PATH}/sentry/redis:/data |
| 202 | + command: redis-server --save 60 1 --loglevel warning |
| 203 | + healthcheck: |
| 204 | + test: ["CMD", "redis-cli", "ping"] |
| 205 | + interval: 15s |
| 206 | + timeout: 5s |
| 207 | + retries: 10 |
| 208 | + |
| 209 | + sentry-postgres: |
| 210 | + image: postgres:16-alpine |
| 211 | + container_name: base-sentry-postgres |
| 212 | + restart: unless-stopped |
| 213 | + environment: |
| 214 | + POSTGRES_DB: ${SENTRY_DB_NAME:-sentry} |
| 215 | + POSTGRES_USER: ${SENTRY_DB_USER:-sentry} |
| 216 | + POSTGRES_PASSWORD: ${SENTRY_DB_PASS:-sentry} |
| 217 | + volumes: |
| 218 | + - ${DATA_PATH}/sentry/postgres:/var/lib/postgresql/data |
| 219 | + healthcheck: |
| 220 | + test: ["CMD-SHELL", "pg_isready -U ${SENTRY_DB_USER:-sentry} -d ${SENTRY_DB_NAME:-sentry}"] |
| 221 | + interval: 15s |
| 222 | + timeout: 5s |
| 223 | + retries: 10 |
| 224 | + |
| 225 | + sentry-web: |
| 226 | + image: getsentry/sentry:latest |
| 227 | + container_name: base-sentry-web |
| 228 | + restart: unless-stopped |
| 229 | + environment: *sentry_env |
| 230 | + volumes: |
| 231 | + - ${DATA_PATH}/sentry/files:/var/lib/sentry/files |
| 232 | + command: sh -c "sentry upgrade --noinput && sentry run web" |
| 233 | + ports: |
| 234 | + - "${SENTRY_PORT:-9002}:9000" |
| 235 | + depends_on: |
| 236 | + sentry-postgres: |
| 237 | + condition: service_healthy |
| 238 | + sentry-redis: |
| 239 | + condition: service_healthy |
| 240 | + |
| 241 | + sentry-worker: |
| 242 | + image: getsentry/sentry:latest |
| 243 | + container_name: base-sentry-worker |
| 244 | + restart: unless-stopped |
| 245 | + environment: *sentry_env |
| 246 | + volumes: |
| 247 | + - ${DATA_PATH}/sentry/files:/var/lib/sentry/files |
| 248 | + command: run worker |
| 249 | + depends_on: |
| 250 | + sentry-web: |
| 251 | + condition: service_started |
| 252 | + |
| 253 | + sentry-scheduler: |
| 254 | + image: getsentry/sentry:latest |
| 255 | + container_name: base-sentry-scheduler |
| 256 | + restart: unless-stopped |
| 257 | + environment: *sentry_env |
| 258 | + volumes: |
| 259 | + - ${DATA_PATH}/sentry/files:/var/lib/sentry/files |
| 260 | + command: run cron |
| 261 | + depends_on: |
| 262 | + sentry-web: |
| 263 | + condition: service_started |
0 commit comments