-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
122 lines (113 loc) · 3.2 KB
/
Copy pathdocker-compose.yml
File metadata and controls
122 lines (113 loc) · 3.2 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
services:
nginx:
image: nginx:1.27-alpine
ports: ["${NGINX_PORT:-8084}:80"]
volumes:
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf:ro
- .:/var/www/html:ro
depends_on:
php:
condition: service_healthy
networks: [zephyrus]
restart: unless-stopped
php:
build:
context: .
dockerfile: docker/php/Dockerfile
volumes: [".:/var/www/html"]
env_file: [.env]
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "php-fpm-healthcheck || exit 1"]
interval: 10s
timeout: 5s
retries: 3
start_period: 30s
networks: [zephyrus]
restart: unless-stopped
node:
image: node:22-alpine
working_dir: /app
command: npm run dev
ports: ["${VITE_PORT:-5176}:5173"]
volumes: [".:/app", "/app/node_modules"]
environment: [NODE_ENV=development]
networks: [zephyrus]
profiles: [dev]
postgres:
image: postgres:16-alpine
ports: ["${POSTGRES_PORT:-5484}:5432"]
environment:
POSTGRES_DB: ${DB_DATABASE:-zephyrus}
POSTGRES_USER: ${DB_USERNAME:-zephyrus}
POSTGRES_PASSWORD: ${DB_PASSWORD:-secret}
volumes: [postgres_data:/var/lib/postgresql/data]
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USERNAME:-zephyrus}"]
interval: 10s
timeout: 5s
retries: 5
networks: [zephyrus]
restart: unless-stopped
redis:
image: redis:7-alpine
ports: ["${REDIS_PORT:-6384}:6379"]
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 5s
retries: 5
networks: [zephyrus]
restart: unless-stopped
mailhog:
image: mailhog/mailhog
ports: ["${MAILHOG_UI_PORT:-8029}:8025", "${MAILHOG_SMTP_PORT:-1029}:1025"]
networks: [zephyrus]
profiles: [dev]
# Eddy — process-aware AI agent (opt-in; start with `docker compose --profile eddy up -d`).
# Laravel reaches it at http://eddy:8000. Provider secrets come from .env (Eddy-only).
eddy:
build:
context: .
dockerfile: docker/eddy/Dockerfile
container_name: zephyrus-eddy
env_file: [.env]
environment:
EDDY_PORT: 8000
ports: ["${EDDY_PORT:-8090}:8000"]
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
networks: [zephyrus]
profiles: [eddy]
restart: unless-stopped
# Patient-Flow Arena — OCPM sidecar (Part X; opt-in via `--profile arena`).
# Laravel reaches it at http://arena:8100. Stateless, read-only, PHI-free: it
# reads the de-identified OCEL 2.0 export (storage/app/ocel, mounted read-only)
# and returns canon-shaped discovery JSON. Ships behind ARENA_ENABLED.
arena:
build:
context: .
dockerfile: docker/arena/Dockerfile
container_name: zephyrus-arena
env_file: [.env]
environment:
ARENA_PORT: 8100
ARENA_OCEL_EXPORT_PATH: /data/ocel/ocel-export.json
ports: ["${ARENA_PORT:-8110}:8100"]
volumes:
- ./storage/app/ocel:/data/ocel:ro
networks: [zephyrus]
profiles: [arena]
restart: unless-stopped
networks:
zephyrus:
driver: bridge
volumes:
postgres_data: