-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
119 lines (114 loc) · 3.15 KB
/
docker-compose.yml
File metadata and controls
119 lines (114 loc) · 3.15 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
services:
back:
build: ./back
container_name: pos-back
restart: unless-stopped
user: "${DOCKER_UID:-1000}:${DOCKER_GID:-1000}"
expose:
- "8020"
environment:
- DB_HOST=db
- DB_PORT=5432
- DB_USER=${POSTGRES_USER:-pos}
- DB_PASSWORD=${POSTGRES_PASSWORD:-pos}
- DB_NAME=${POSTGRES_DB:-pos}
- REDIS_URL=redis://redis:6379
- SECRET_KEY=${SECRET_KEY:-CHANGE_THIS_IN_PRODUCTION}
- STRIPE_CURRENCY=${STRIPE_CURRENCY:-usd}
- CORS_ORIGINS=${CORS_ORIGINS:-http://localhost:4200}
- SMTP_HOST=${SMTP_HOST:-smtp.gmail.com}
- SMTP_PORT=${SMTP_PORT:-587}
- SMTP_USER=${SMTP_USER:-}
- SMTP_PASSWORD=${SMTP_PASSWORD:-}
- SMTP_USE_TLS=${SMTP_USE_TLS:-true}
- EMAIL_FROM=${EMAIL_FROM:-}
- EMAIL_FROM_NAME=${EMAIL_FROM_NAME:-POS2 System}
volumes:
- ./back:/app
- ./back/uploads:/app/uploads
- ./config.env:/app/config.env:ro
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
front:
build: ./front
container_name: pos-front
restart: unless-stopped
expose:
- "4200"
environment:
- NODE_ENV=development
# Leave API_URL and WS_URL empty to use relative URLs (proxied through HAProxy)
- API_URL=${API_URL:-}
- WS_URL=${WS_URL:-}
- STRIPE_PUBLISHABLE_KEY=${STRIPE_PUBLISHABLE_KEY:-}
volumes:
- ./front:/app
- /app/node_modules
depends_on:
- db
- redis
- ws-bridge
- back
db:
image: postgres:18-alpine3.23
container_name: pos-postgres
restart: unless-stopped
environment:
POSTGRES_DB: ${POSTGRES_DB:-pos}
POSTGRES_USER: ${POSTGRES_USER:-pos}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-pos}
ports:
- "127.0.0.1:${POSTGRES_PORT:-5433}:5432"
volumes:
- pos_pgdata:/var/lib/postgresql
healthcheck:
test: [ "CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB" ]
interval: 5s
timeout: 5s
retries: 20
redis:
image: redis:7-alpine
container_name: pos-redis
restart: unless-stopped
ports:
- "127.0.0.1:${REDIS_PORT:-6379}:6379"
healthcheck:
test: [ "CMD", "redis-cli", "ping" ]
interval: 5s
timeout: 5s
retries: 20
ws-bridge:
build: ./ws-bridge
container_name: pos-ws-bridge
restart: unless-stopped
expose:
- "8021"
environment:
REDIS_URL: redis://redis:6379
SECRET_KEY: ${SECRET_KEY:-CHANGE_THIS_IN_PRODUCTION}
ALGORITHM: ${ALGORITHM:-HS256}
API_URL: http://pos-back:8020
CORS_ORIGINS: ${CORS_ORIGINS:-http://localhost:4200}
depends_on:
redis:
condition: service_healthy
back:
condition: service_started
haproxy:
image: haproxy:2.8-alpine
container_name: pos-haproxy
restart: unless-stopped
ports:
# 0.0.0.0 for LAN access in dev; production uses docker-compose.prod.yml override
- "0.0.0.0:${FRONTEND_PORT:-4202}:4202"
volumes:
- ./haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
depends_on:
- front
- back
- ws-bridge
volumes:
pos_pgdata: