-
Notifications
You must be signed in to change notification settings - Fork 43
Expand file tree
/
Copy pathdocker-compose.dev.yml
More file actions
151 lines (145 loc) · 4.13 KB
/
docker-compose.dev.yml
File metadata and controls
151 lines (145 loc) · 4.13 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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
services:
# MariaDB database for MONARC
fodb:
image: mariadb:10.11
container_name: monarc-fo-db
environment:
MYSQL_ROOT_PASSWORD: ${DBPASSWORD_ADMIN}
MYSQL_DATABASE: ${DBNAME_COMMON}
MYSQL_USER: ${DBUSER_MONARC}
MYSQL_PASSWORD: ${DBPASSWORD_MONARC}
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_general_ci
- --bind-address=0.0.0.0
- --sql-mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
ports:
- "${DBPORT_HOST:-3307}:3306"
volumes:
- db_data:/var/lib/mysql
- ./docker/db-init:/docker-entrypoint-initdb.d:ro
networks:
- monarc-network
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${DBPASSWORD_ADMIN}"]
interval: 10s
timeout: 5s
retries: 5
# PostgreSQL database for stats service
postgres:
image: postgres:15
container_name: monarc-fo-postgres
environment:
POSTGRES_USER: ${STATS_DB_USER}
POSTGRES_PASSWORD: ${STATS_DB_PASSWORD}
POSTGRES_DB: ${STATS_DB_NAME}
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
networks:
- monarc-network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${STATS_DB_USER} -d ${STATS_DB_NAME}"]
interval: 10s
timeout: 5s
retries: 5
# Stats service
stats-service:
build:
context: .
dockerfile: Dockerfile.stats
container_name: monarc-fo-stats
environment:
STATS_HOST: ${STATS_HOST}
STATS_PORT: ${STATS_PORT}
STATS_DB_HOST: postgres
STATS_DB_NAME: ${STATS_DB_NAME}
STATS_DB_USER: ${STATS_DB_USER}
STATS_DB_PASSWORD: ${STATS_DB_PASSWORD}
STATS_SECRET_KEY: ${STATS_SECRET_KEY}
ports:
- "5005:5005"
depends_on:
postgres:
condition: service_healthy
networks:
- monarc-network
volumes:
- stats_data:/var/www/stats-service
# MailCatcher for email testing
mailcatcher:
image: sj26/mailcatcher:latest
container_name: monarc-fo-mailcatcher
ports:
- "1080:1080" # Web interface
- "8825:1025" # SMTP
networks:
- monarc-network
# Main MONARC FrontOffice application
monarcfoapp:
build:
context: .
dockerfile: Dockerfile
args:
NODE_MAJOR: ${NODE_MAJOR:-16}
XDEBUG_ENABLED: ${XDEBUG_ENABLED:-1}
XDEBUG_MODE: ${XDEBUG_MODE:-debug}
XDEBUG_START_WITH_REQUEST: ${XDEBUG_START_WITH_REQUEST:-trigger}
XDEBUG_CLIENT_HOST: ${XDEBUG_CLIENT_HOST:-host.docker.internal}
XDEBUG_CLIENT_PORT: ${XDEBUG_CLIENT_PORT:-9003}
XDEBUG_IDEKEY: ${XDEBUG_IDEKEY:-IDEKEY}
XDEBUG_DISCOVER_CLIENT_HOST: ${XDEBUG_DISCOVER_CLIENT_HOST:-0}
container_name: monarc-fo-app
environment:
DBHOST: ${DBHOST:-fodb}
DBNAME_COMMON: ${DBNAME_COMMON}
DBNAME_CLI: ${DBNAME_CLI}
DBUSER_MONARC: ${DBUSER_MONARC}
DBPASSWORD_MONARC: ${DBPASSWORD_MONARC}
DBPASSWORD_ADMIN: ${DBPASSWORD_ADMIN}
USE_BO_COMMON: ${USE_BO_COMMON:-0}
STATS_API_KEY: ${STATS_API_KEY}
APP_ENV: development
APP_DIR: /var/www/html/monarc
ports:
- "5001:80"
depends_on:
fodb:
condition: service_healthy
# stats-service:
# condition: service_started
networks:
- monarc-network
volumes:
# Mount the application code for live development
- ./:/var/www/html/monarc
# Preserve vendor directory in named volume for better performance
- vendor_data:/var/www/html/monarc/vendor
- node_modules_data:/var/www/html/monarc/node_modules
working_dir: /var/www/html/monarc
networks:
monarc-network:
name: ${MONARC_NETWORK_NAME:-monarc-network}
external: true
volumes:
db_data:
driver: local
driver_opts:
type: none
device: ./docker/db_data
o: bind
postgres_data:
stats_data:
vendor_data:
driver: local
driver_opts:
type: none
device: ./vendor
o: bind
node_modules_data:
driver: local
driver_opts:
type: none
device: ./node_modules
o: bind