-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.yaml
More file actions
186 lines (174 loc) · 5.86 KB
/
docker-compose.yaml
File metadata and controls
186 lines (174 loc) · 5.86 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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
x-firebase: &base_firebase_setup
build:
context: ./firebase/
target: emulator
stop_grace_period: 30s
tty: true
entrypoint: ["./docker_entrypoint.sh"]
x-server: &base_server_setup
build:
context: ./
tags:
- mapswipe/mapswipe-backend:${DOCKER_TAG:-latest}
# Used for python debugging.
stdin_open: true
tty: true
environment: &base_server_environments
DEBUG: ${DEBUG:-true}
ENABLE_DEBUG_TOOLBAR: ${ENABLE_DEBUG_TOOLBAR:-true}
APP_ENVIRONMENT: ${APP_ENVIRONMENT:-DEV}
SECRET_KEY: ${SECRET_KEY:?error}
ENABLE_STRAWBERRY_GRAPHIQL: ${ENABLE_STRAWBERRY_GRAPHIQL:-true}
# Domain configs
APP_DOMAIN: ${APP_DOMAIN:-http://localhost:8000}
MANAGER_DASHBOARD_DOMAIN: ${MANAGER_DASHBOARD_DOMAIN:-http://localhost:3000}
COMMUNITY_DASHBOARD_DOMAIN: ${COMMUNITY_DASHBOARD_DOMAIN:-http://localhost:3020}
WEBSITE_DOMAIN: ${WEBSITE_DOMAIN:-http://localhost:3200}
SESSION_COOKIE_DOMAIN: ${SESSION_COOKIE_DOMAIN:-localhost}
CSRF_COOKIE_DOMAIN: ${CSRF_COOKIE_DOMAIN:-localhost}
# Postgres
POSTGRES_DB: ${POSTGRES_DB:-mapswipe}
POSTGRES_USER: ${POSTGRES_USER:-postgres}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres}
POSTGRES_HOST: ${POSTGRES_HOST:-db}
POSTGRES_PORT: ${POSTGRES_PORT:-5432}
# Redis
CELERY_REDIS_URL: ${CELERY_REDIS_URL:-redis://redis:6379/0}
CACHE_REDIS_URL: ${CACHE_REDIS_URL:-redis://redis:6379/1}
TEST_CACHE_REDIS_URL: ${TEST_CACHE_REDIS_URL:-redis://redis:6379/11}
# Email (Using mailpit)
EMAIL_HOST: ${EMAIL_HOST:-mailpit}
EMAIL_PORT: ${EMAIL_PORT:-1025}
EMAIL_USE_TLS: ${EMAIL_USE_TLS:-false}
EMAIL_HOST_USER: ${EMAIL_HOST_USER:-mailpit}
EMAIL_HOST_PASSWORD: ${EMAIL_HOST_PASSWORD:-mailpit}
DEFAULT_FROM_EMAIL: ${DEFAULT_FROM_EMAIL:-Mapswipe Dev <dev@mapswipe.org>}
# Map Image keys (Dummy values)
MAP_IMAGE_BING_API_KEY: ${MAP_IMAGE_BING_API_KEY:-dummy-bing}
MAP_IMAGE_MAPBOX_API_KEY: ${MAP_IMAGE_MAPBOX_API_KEY:-dummy-mapbox}
MAP_IMAGE_MAXAR_STANDARD_API_KEY: ${MAP_IMAGE_MAXAR_STANDARD_API_KEY:-dummy-maxar-standard}
MAP_IMAGE_MAXAR_PREMIUM_API_KEY: ${MAP_IMAGE_MAXAR_PREMIUM_API_KEY:-dummy-maxar-premium}
MAP_IMAGE_ESRI_API_KEY: ${MAP_IMAGE_ESRI_API_KEY:-dummy-esri}
MAP_IMAGE_ESRI_BETA_API_KEY: ${MAP_IMAGE_ESRI_BETA_API_KEY:-dummy-esri-beta}
# MAP_IMAGE_DIGITAL_GLOBE_API_KEY: ${MAP_IMAGE_DIGITAL_GLOBE_API_KEY:-dummy-digital-globe}
OSMCHA_API_KEY: ${OSMCHA_API_KEY:-dummy-osmcha-api-key}
MAPILLARY_API_KEY: ${MAPILLARY_API_KEY:-dummy-mapillary-api-key}
# Firebase
FIREBASE_EMULATOR_USE: ${FIREBASE_EMULATOR_USE:-true}
FIREBASE_EMULATOR_PROJECT_ID: ${FIREBASE_EMULATOR_PROJECT_ID:-dev-mapswipe}
FIREBASE_EMULATOR_DATABASE_HOST: ${FIREBASE_EMULATOR_DATABASE_HOST:-firebase:9000}
FIREBASE_EMULATOR_AUTH_HOST: ${FIREBASE_EMULATOR_DATABASE_HOST:-firebase:9099}
env_file:
- path: ${BACKEND_ENV_FILE:-.env}
required: false
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
- ./:/code/
- ipython_data_local:/root/.ipython/profile_default # persist ipython data, including ipython history
depends_on:
- db
- redis
- mailpit
- firebase
x-worker: &base_worker_setup
<<: *base_server_setup
restart: unless-stopped
environment:
<<: *base_server_environments
APP_TYPE: "WORKER-BEAT"
services:
db:
image: postgis/postgis:17-3.5
ports:
- 127.0.0.1:${MAPSWIPE_DB_EXPOSE_PORT:-5432}:5432
environment:
POSTGRES_DB: mapswipe
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
volumes:
- postgres_data17:/var/lib/postgresql/data
redis:
image: redis:7
volumes:
- redis_data:/data
firebase:
<<: *base_firebase_setup
environment:
FIREBASE_EMULATOR_DATA_DIR: "/data/emulator"
volumes:
- ./firebase:/firebase
- ./.data/firebase:/data/
ports:
- "127.0.0.1:4000:4000" # ui
- "127.0.0.1:4400:4400" # hub
- "127.0.0.1:4600:4600" # logging
- "127.0.0.1:9000:9000" # database
- "127.0.0.1:9099:9099" # auth
- "127.0.0.1:5001:5001" # functions
firebase-test:
<<: *base_firebase_setup
environment:
FIREBASE_EMULATOR_DATA_DIR: "/emulator"
# NOTE: We are disabling functions on firebase because it is consuming
# lot of resources and we do not actually need output from functions on
# the backend
FIREBASE_EMULATOR_FUNCTIONS_DISABLED: true
volumes:
- ./firebase:/firebase
mailpit:
image: axllent/mailpit:latest
restart: unless-stopped
ports:
- 127.0.0.1:8025:8025 # Web
environment:
MP_MAX_MESSAGES: 200
MP_DATA_FILE: /data/mailpit.db
MP_SMTP_AUTH_ACCEPT_ANY: 1
MP_SMTP_AUTH_ALLOW_INSECURE: 1
volumes:
- mailpit_data:/data
web:
<<: *base_server_setup
command: ["/code/misc/dev/run_web.sh"]
environment:
<<: *base_server_environments
APP_TYPE: "WEB"
ports:
- 127.0.0.1:8000:8000
depends_on:
- db
- redis
- firebase
worker-beat:
<<: *base_worker_setup
command: bash -c "/code/misc/dev/run_worker_beat.sh"
worker:
<<: *base_worker_setup
command: bash -c "/code/misc/dev/run_worker.sh"
healthcheck:
test: ["CMD-SHELL", "celery -A main inspect ping -d celery@$$HOSTNAME || exit 1"]
interval: 30s
timeout: 5s
retries: 3
start_period: 30s
test:
<<: *base_server_setup
environment:
<<: *base_server_environments
APP_TYPE: "WEB"
FIREBASE_EMULATOR_USE: true
FIREBASE_EMULATOR_PROJECT_ID: dev-mapswipe
FIREBASE_EMULATOR_DATABASE_HOST: firebase-test:9000
FIREBASE_EMULATOR_TEST_HOST: firebase-test:9000
SLACK_BOT_ENABLED: false
SLACK_FALLBACK_TO_CONSOLE: true
depends_on:
- db
- redis
- firebase-test
volumes:
postgres_data17:
redis_data:
mailpit_data:
ipython_data_local: