-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
132 lines (125 loc) · 3.3 KB
/
docker-compose.yml
File metadata and controls
132 lines (125 loc) · 3.3 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
name: pnode-pulse
services:
# PostgreSQL + TimescaleDB
postgres:
image: timescale/timescaledb:latest-pg16
container_name: pnode-pulse-postgres
restart: unless-stopped
ports:
- "127.0.0.1:5434:5432"
environment:
POSTGRES_USER: pnodepulse
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: pnodepulse
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- pnode-pulse-net
healthcheck:
test: ["CMD-SHELL", "pg_isready -U pnodepulse"]
interval: 10s
timeout: 5s
retries: 5
# Redis Cache
redis:
image: redis:7-alpine
container_name: pnode-pulse-redis
restart: unless-stopped
ports:
- "127.0.0.1:6381:6379"
volumes:
- redis_data:/data
networks:
- pnode-pulse-net
command: redis-server --appendonly yes
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 5
# Staging (dev branch)
staging:
image: ghcr.io/rector-labs/pnode-pulse:latest
container_name: pnode-pulse-web-staging
restart: unless-stopped
ports:
- "7002:3000"
environment:
NODE_ENV: production
DATABASE_URL: postgresql://pnodepulse:${POSTGRES_PASSWORD}@postgres:5432/pnodepulse
REDIS_HOST: redis
REDIS_PORT: 6379
NEXT_PUBLIC_APP_URL: https://staging.pulse.rectorspace.com
networks:
- pnode-pulse-net
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:3000/api/health"]
interval: 30s
timeout: 10s
retries: 3
# Production Blue
blue:
image: ghcr.io/rector-labs/pnode-pulse:latest
container_name: pnode-pulse-web-blue
restart: unless-stopped
ports:
- "7000:3000"
environment:
NODE_ENV: production
DATABASE_URL: postgresql://pnodepulse:${POSTGRES_PASSWORD}@postgres:5432/pnodepulse
REDIS_HOST: redis
REDIS_PORT: 6379
NEXT_PUBLIC_APP_URL: https://pulse.rectorspace.com
networks:
- pnode-pulse-net
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:3000/api/health"]
interval: 30s
timeout: 10s
retries: 3
# Production Green
green:
image: ghcr.io/rector-labs/pnode-pulse:latest
container_name: pnode-pulse-web-green
restart: unless-stopped
ports:
- "7001:3000"
environment:
NODE_ENV: production
DATABASE_URL: postgresql://pnodepulse:${POSTGRES_PASSWORD}@postgres:5432/pnodepulse
REDIS_HOST: redis
REDIS_PORT: 6379
NEXT_PUBLIC_APP_URL: https://pulse.rectorspace.com
networks:
- pnode-pulse-net
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://127.0.0.1:3000/api/health"]
interval: 30s
timeout: 10s
retries: 3
profiles:
- green
volumes:
postgres_data:
name: pnode-pulse-postgres-data
redis_data:
name: pnode-pulse-redis-data
networks:
pnode-pulse-net:
driver: bridge
name: pnode-pulse-network