forked from activist-org/activist
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yml
More file actions
147 lines (143 loc) · 4.09 KB
/
docker-compose.yml
File metadata and controls
147 lines (143 loc) · 4.09 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
services:
db:
env_file:
- .env.dev
image: postgres:15
container_name: postgres_db
environment:
- POSTGRES_DB=${DATABASE_NAME}
- POSTGRES_USER=${DATABASE_USER}
- POSTGRES_PASSWORD=${DATABASE_PASSWORD}
ports:
- "${DATABASE_PORT}:${DATABASE_PORT}"
healthcheck:
test: ["CMD", "pg_isready", "-U", "${DATABASE_USER}"]
interval: 10s
timeout: 5s
retries: 5
backend:
env_file:
- .env.dev
depends_on:
- db
- mailhog
build:
context: ./backend
container_name: django_backend
networks:
default:
aliases:
- backend
restart: unless-stopped
command: sh -c "
if [ \"$ENVIRONMENT\" = \"development\" ]; then
uv run /app/core/management/commands/clear_dev_images.py;
fi;
uv run manage.py wait_for_db &&
uv run manage.py makemigrations &&
uv run manage.py migrate &&
uv run manage.py loaddata fixtures/superuser.json &&
uv run manage.py loaddata fixtures/status_types.json &&
uv run manage.py loaddata fixtures/topics.json &&
uv run manage.py populate_db \
--users 10 \
--orgs-per-user 1 \
--groups-per-org 2 \
--events-per-org 1 \
--events-per-group 1 \
--faq-entries-per-entity 3 \
--resources-per-entity 2 \
--yaml-data-to-assign core/management/commands/entity_data_to_assign.yaml &&
uv run manage.py runserver 0.0.0.0:${BACKEND_PORT}"
ports:
- "${BACKEND_PORT}:${BACKEND_PORT}"
environment:
- DATABASE_NAME=${DATABASE_NAME}
- DATABASE_USER=${DATABASE_USER}
- DATABASE_PASSWORD=${DATABASE_PASSWORD}
- DATABASE_HOST=${DATABASE_HOST}
- DATABASE_PORT=${DATABASE_PORT}
- DJANGO_ALLOWED_HOSTS=${DJANGO_ALLOWED_HOSTS}
- DEBUG=${DEBUG}
- SECRET_KEY=${SECRET_KEY}
- VITE_FRONTEND_URL=${VITE_FRONTEND_URL}
- VITE_BACKEND_URL=${VITE_BACKEND_URL}
- EMAIL_BACKEND=${EMAIL_BACKEND}
- EMAIL_HOST=${EMAIL_HOST}
- EMAIL_PORT=${EMAIL_PORT}
- EMAIL_HOST_USER=${EMAIL_HOST_USER}
- EMAIL_HOST_PASSWORD=${EMAIL_HOST_PASSWORD}
- EMAIL_USE_TLS=${EMAIL_USE_TLS}
healthcheck:
test:
[
"CMD-SHELL",
"curl -f http://localhost:${BACKEND_PORT}/v1/schema/ || exit 1",
]
interval: 10s
timeout: 5s
retries: 5
start_period: 60s
volumes:
- ./backend/media:/app/media
filescan:
env_file:
- .env.dev
build:
context: ./services/filescan
container_name: filescan_service
environment:
- FILESCAN_QUARANTINE_DIR=/var/filescan/quarantine
ports:
- "${FILESCAN_PORT}:${FILESCAN_PORT}"
healthcheck:
test:
[
"CMD-SHELL",
"curl -f http://localhost:${FILESCAN_PORT}/health || exit 1",
]
interval: 10s
timeout: 5s
retries: 5
volumes:
- ./quarantine:/var/filescan/quarantine
mailhog:
image: mailhog/mailhog:latest
container_name: mailhog
ports:
- "1025:1025"
- "8025:8025"
frontend:
env_file:
- .env.dev
build:
context: ./frontend
container_name:
nuxt_frontend
# Use USE_PREVIEW=true to run pre-built version (faster for E2E tests).
# Use USE_PREVIEW=false or unset for dev mode (default).
command: sh -c "
corepack enable && yarn install &&
if [ \"$${USE_PREVIEW}\" = \"true\" ]; then
echo '🏗️ Building frontend for preview mode...' &&
yarn build &&
echo '▶️ Starting preview server on port ${FRONTEND_PORT}...' &&
yarn preview --port ${FRONTEND_PORT};
else
echo '▶️ Starting dev server...' &&
yarn dev --port ${FRONTEND_PORT};
fi"
volumes:
- ./frontend:/app
ports:
- "${FRONTEND_PORT}:${FRONTEND_PORT}"
- "24678:24678"
environment:
- USE_PREVIEW=${USE_PREVIEW:-false}
- NUXT_SESSION_PASSWORD=${NUXT_SESSION_PASSWORD}
healthcheck:
test:
["CMD-SHELL", "curl -f http://localhost:${FRONTEND_PORT}/ || exit 1"]
interval: 10s
timeout: 5s
retries: 5