forked from
smokesignal.events/smokesignal
The smokesignal.events web application
1version: '3.8'
2
3services:
4 postgres:
5 image: postgres:17-alpine
6 container_name: smokesignal_postgres
7 environment:
8 POSTGRES_DB: smokesignal_dev
9 POSTGRES_USER: smokesignal
10 POSTGRES_PASSWORD: smokesignal_dev_password
11 POSTGRES_INITDB_ARGS: "--encoding=UTF8 --locale=C"
12 ports:
13 - "5436:5432" # Using 5433 to avoid conflicts with system PostgreSQL
14 volumes:
15 - postgres_data:/var/lib/postgresql/data
16 - ./init-db.sql:/docker-entrypoint-initdb.d/init-db.sql:ro
17 healthcheck:
18 test: ["CMD-SHELL", "pg_isready -U smokesignal -d smokesignal_dev"]
19 interval: 5s
20 timeout: 5s
21 retries: 5
22 restart: unless-stopped
23
24 minio:
25 image: minio/minio:latest
26 container_name: smokesignal_minio
27 command: server /data --console-address ":9001"
28 environment:
29 MINIO_ROOT_USER: smokesignal_minio
30 MINIO_ROOT_PASSWORD: smokesignal_dev_secret
31 ports:
32 - "9000:9000" # MinIO API
33 - "9001:9001" # MinIO Console
34 volumes:
35 - minio_data:/data
36 healthcheck:
37 test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
38 interval: 30s
39 timeout: 20s
40 retries: 3
41 restart: unless-stopped
42
43 createbuckets:
44 image: minio/mc
45 depends_on:
46 - minio
47 entrypoint: >
48 /bin/sh -c "
49 /usr/bin/mc mc alias set local http://localhost:9000 smokesignal_minio smokesignal_dev_secret;
50 /usr/bin/mc mb myminio/smokesignal-badges;
51 /usr/bin/mc policy set public myminio/smokesignal-badges;
52 exit 0;
53 "
54
55 redis:
56 image: redis:7-alpine
57 container_name: smokesignal_redis
58 ports:
59 - "6379:6379"
60 volumes:
61 - redis_data:/data
62 command: redis-server --appendonly yes
63 healthcheck:
64 test: ["CMD", "redis-cli", "ping"]
65 interval: 5s
66 timeout: 3s
67 retries: 5
68 restart: unless-stopped
69
70volumes:
71 minio_data:
72 driver: local
73 postgres_data:
74 driver: local
75 pgadmin_data:
76 driver: local
77 redis_data:
78 driver: local
79
80networks:
81 default:
82 name: smokesignal_network