-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
102 lines (97 loc) · 2.67 KB
/
Copy pathdocker-compose.yml
File metadata and controls
102 lines (97 loc) · 2.67 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
services:
asterisk:
build: ./asterisk
container_name: pbx_asterisk
restart: unless-stopped
ports:
- "${SIP_PORT:-5060}:5060/udp"
- "${SIP_PORT:-5060}:5060/tcp"
- "127.0.0.1:5038:5038/tcp"
- "10000-10100:10000-10100/udp"
volumes:
- ./asterisk/config:/etc/asterisk/custom
- asterisk_voicemail:/var/spool/asterisk/voicemail
healthcheck:
test: ["CMD", "asterisk", "-rx", "core show version"]
interval: 30s
timeout: 10s
retries: 3
networks:
- pbx_network
command: >
sh -c "
cp /etc/asterisk/custom/*.conf /etc/asterisk/ 2>/dev/null || true;
/usr/sbin/asterisk -f
"
backend:
build: ./backend
container_name: pbx_backend
restart: unless-stopped
ports:
- "${BIND_ADDRESS:-127.0.0.1}:8000:8000"
env_file: .env
environment:
- DATABASE_URL=postgresql://asterisk:${DB_PASSWORD}@postgres:5432/asterisk_gui
- ASTERISK_HOST=asterisk
- ASTERISK_PORT=5038
- ASTERISK_USER=admin
- ASTERISK_PASSWORD=${AMI_PASSWORD}
- HA_API_KEY=${HA_API_KEY:-}
- MQTT_BROKER=${MQTT_BROKER:-}
- MQTT_PORT=${MQTT_PORT:-1883}
- MQTT_USER=${MQTT_USER:-}
- MQTT_PASSWORD=${MQTT_PASSWORD:-}
volumes:
- ./asterisk/config:/etc/asterisk/custom
- ./backend:/app
- user_uploads:/app/uploads
- asterisk_voicemail:/var/spool/asterisk/voicemail
- /var/run/docker.sock:/var/run/docker.sock
- ${PROJECT_DIR:-.}:/project
- /var/lib/fail2ban/fail2ban.sqlite3:/var/lib/fail2ban/fail2ban.sqlite3:ro
- /var/run/fail2ban/fail2ban.sock:/var/run/fail2ban/fail2ban.sock
depends_on:
postgres:
condition: service_healthy
asterisk:
condition: service_healthy
networks:
- pbx_network
frontend:
build:
context: ./frontend
args:
- VITE_UI_LANG=${UI_LANG:-de}
container_name: pbx_frontend
restart: unless-stopped
ports:
- "${BIND_ADDRESS:-127.0.0.1}:3000:80"
depends_on:
- backend
networks:
- pbx_network
postgres:
image: postgres:15-alpine
container_name: pbx_postgres
restart: unless-stopped
environment:
- POSTGRES_USER=asterisk
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=asterisk_gui
volumes:
- postgres_data:/var/lib/postgresql/data
# PostgreSQL nur intern erreichbar, kein Port-Mapping nötig
healthcheck:
test: ["CMD-SHELL", "pg_isready -U asterisk"]
interval: 10s
timeout: 5s
retries: 5
networks:
- pbx_network
volumes:
postgres_data:
asterisk_voicemail:
user_uploads:
networks:
pbx_network:
driver: bridge