Skip to content

Commit 8033e60

Browse files
committed
Initial commit
Signed-off-by: Cy Rossignol <[email protected]>
0 parents  commit 8033e60

16 files changed

+644
-0
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
2+
docker-compose.override.yml

.gitmodules

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
[submodule "tasking-manager"]
2+
path = tasking-manager
3+
url = https://github.com/TaskarCenterAtUW/workspaces-tasking-manager.git
4+
branch = workspaces
5+
[submodule "osm-cgimap"]
6+
path = osm-cgimap
7+
url = https://github.com/TaskarCenterAtUW/workspaces-cgimap.git
8+
branch = workspaces
9+
[submodule "osm-rails"]
10+
path = osm-rails
11+
url = https://github.com/TaskarCenterAtUW/workspaces-openstreetmap-website.git
12+
branch = workspaces
13+
[submodule "frontend"]
14+
path = frontend
15+
url = https://github.com/TaskarCenterAtUW/workspaces-frontend.git
16+
branch = temp-backup
17+
[submodule "pathways-editor"]
18+
path = pathways-editor
19+
url = https://github.com/TaskarCenterAtUW/GTFS-Pathways-Editor

docker-compose.build.yml

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
services:
2+
frontend:
3+
image: ${WS_DOCKER_REGISTRY}/workspaces-frontend:${WS_DOCKER_TAG}
4+
build:
5+
context: frontend
6+
args:
7+
VITE_TDEI_API_URL: ${WS_TDEI_API_URL}
8+
VITE_API_URL: ${WS_API_URL}
9+
VITE_OSM_URL: ${WS_OSM_URL}
10+
VITE_RAPID_URL: ${WS_RAPID_URL}
11+
12+
rapid:
13+
image: ${WS_DOCKER_REGISTRY}/workspaces-rapid:${WS_DOCKER_TAG}
14+
build:
15+
context: rapid
16+
17+
osm-log-proxy:
18+
image: ${WS_DOCKER_REGISTRY}/workspaces-osm-log-proxy:${WS_DOCKER_TAG}
19+
build:
20+
context: osm-log-proxy
21+
22+
osm-web:
23+
image: ${WS_DOCKER_REGISTRY}/workspaces-osm-web:${WS_DOCKER_TAG}
24+
build:
25+
context: osm-web
26+
27+
osm-rails:
28+
image: ${WS_DOCKER_REGISTRY}/workspaces-osm-rails:${WS_DOCKER_TAG}
29+
build:
30+
context: osm-rails
31+
dockerfile: Dockerfile.prod
32+
33+
osm-cgimap:
34+
image: ${WS_DOCKER_REGISTRY}/workspaces-osm-cgimap:${WS_DOCKER_TAG}
35+
build:
36+
context: osm-cgimap
37+
dockerfile: docker/ubuntu/Dockerfile2404
38+
39+
tasks-frontend:
40+
image: ${WS_DOCKER_REGISTRY}/workspaces-tasks-frontend:${WS_DOCKER_TAG}
41+
build:
42+
context: tasking-manager
43+
dockerfile: ./scripts/docker/Dockerfile.frontend
44+
args:
45+
TM_APP_API_URL: ${WS_TASKS_URL}
46+
#TM_CONSUMER_KEY
47+
#TM_CONSUMER_SECRET
48+
49+
50+
tasks-backend:
51+
image: ${WS_DOCKER_REGISTRY}/workspaces-tasks-backend:${WS_DOCKER_TAG}
52+
build:
53+
context: tasking-manager
54+
dockerfile: ./scripts/docker/Dockerfile.backend
55+
target: prod
56+
args:
57+
APP_UID: 1000

docker-compose.deploy.yml

Lines changed: 193 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,193 @@
1+
################################################################################
2+
3+
x-osm-rails-base:
4+
&osm-rails-base
5+
image: ${WS_DOCKER_REGISTRY}/workspaces-osm-rails:${WS_DOCKER_TAG}
6+
restart: always
7+
environment:
8+
RAILS_ENV: production
9+
SECRET_KEY_BASE: ${WS_OSM_SECRET_KEY_BASE}
10+
WS_OSM_HOST: ${WS_OSM_HOST}
11+
WS_OSM_DB_HOST: ${WS_OSM_DB_HOST}
12+
WS_OSM_DB_USER: ${WS_OSM_DB_USER}
13+
WS_OSM_DB_PASS: ${WS_OSM_DB_PASS}
14+
WS_OSM_DB_NAME: ${WS_OSM_DB_NAME}
15+
WS_MAIL_NAME: ${WS_MAIL_NAME}
16+
WS_MAIL_FROM: ${WS_MAIL_FROM}
17+
WS_MAIL_CONTACT: ${WS_MAIL_CONTACT}
18+
WS_MAIL_RETURN_PATH: ${WS_MAIL_RETURN_PATH}
19+
WS_SMTP_DOMAIN: ${WS_SMTP_DOMAIN}
20+
WS_SMTP_HOST: ${WS_SMTP_HOST}
21+
WS_SMTP_PORT: ${WS_SMTP_PORT}
22+
WS_SMTP_USER: ${WS_SMTP_USER}
23+
WS_SMTP_PASS: ${WS_SMTP_PASS}
24+
PIDFILE: /tmp/pids/server.pid
25+
volumes:
26+
- osm-rails-tmp:/app/tmp
27+
- osm-rails-storage:/app/storage
28+
tmpfs: /tmp/pids/
29+
30+
################################################################################
31+
32+
services:
33+
reverse-proxy:
34+
image: traefik:v3.1
35+
restart: always
36+
ports:
37+
- "80:80"
38+
- "443:443"
39+
volumes:
40+
- /var/run/docker.sock:/var/run/docker.sock:ro
41+
- /opt/traefik/acme.json:/letsencrypt/acme.json
42+
command:
43+
- --providers.docker=true
44+
- --providers.docker.exposedbydefault=false
45+
- --entrypoints.web.address=:80
46+
- --entrypoints.web.http.redirections.entryPoint.to=websecure
47+
- --entrypoints.websecure.address=:443
48+
- --entrypoints.websecure.transport.respondingTimeouts.readTimeout=0s
49+
- --entrypoints.websecure.transport.respondingTimeouts.writeTimeout=0s
50+
- --entrypoints.websecure.transport.respondingTimeouts.idleTimeout=600s
51+
- --certificatesresolvers.myresolver.acme.tlschallenge=true
52+
- --certificatesresolvers.myresolver.acme.email=${WS_MAIL_ACME}
53+
- --certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json
54+
55+
frontend:
56+
image: ${WS_DOCKER_REGISTRY}/workspaces-frontend:${WS_DOCKER_TAG}
57+
restart: always
58+
labels:
59+
- traefik.enable=true
60+
- traefik.http.routers.frontend.rule=Host(`${WS_FRONTEND_HOST}`)
61+
- traefik.http.services.frontend.loadbalancer.server.port=80
62+
- traefik.http.routers.frontend.entrypoints=websecure
63+
- traefik.http.routers.frontend.tls.certresolver=myresolver
64+
65+
backend:
66+
# Workspaces backend currently lives in the TM. Emulate a separate server for now:
67+
image: ${WS_DOCKER_REGISTRY}/workspaces-tasks-backend:${WS_DOCKER_TAG}
68+
restart: always
69+
env_file: tasking-manager/tasking-manager.env
70+
environment:
71+
GUNICORN_CMD_ARGS: "--workers 5 --threads 5 --timeout 179"
72+
labels:
73+
- traefik.enable=true
74+
- traefik.http.middlewares.workspaces-backend-emulation.replacepathregex.regex=^/api/v1/(.*)
75+
- traefik.http.middlewares.workspaces-backend-emulation.replacepathregex.replacement=/api/v2/$$1/
76+
- traefik.http.routers.workspaces-backend.rule=Host(`${WS_API_HOST}`)
77+
- traefik.http.services.workspaces-backend.loadbalancer.server.port=5000
78+
- traefik.http.routers.workspaces-backend.middlewares=workspaces-backend-emulation
79+
- traefik.http.routers.workspaces-backend.entrypoints=websecure
80+
- traefik.http.routers.workspaces-backend.tls.certresolver=myresolver
81+
82+
rapid:
83+
image: ${WS_DOCKER_REGISTRY}/workspaces-rapid:${WS_DOCKER_TAG}
84+
restart: always
85+
labels:
86+
- traefik.enable=true
87+
- traefik.http.middlewares.cors.headers.accesscontrolallowmethods=*
88+
- traefik.http.middlewares.cors.headers.accesscontrolalloworiginlist=*
89+
- traefik.http.middlewares.cors.headers.accesscontrolmaxage=100
90+
- traefik.http.middlewares.cors.headers.addvaryheader=true
91+
- traefik.http.routers.rapid.rule=Host(`${WS_RAPID_HOST}`)
92+
- traefik.http.routers.rapid.middlewares=cors
93+
- traefik.http.services.rapid.loadbalancer.server.port=80
94+
- traefik.http.routers.rapid.entrypoints=websecure
95+
- traefik.http.routers.rapid.tls.certresolver=myresolver
96+
97+
osm-log-proxy:
98+
image: ${WS_DOCKER_REGISTRY}/workspaces-osm-log-proxy:${WS_DOCKER_TAG}
99+
depends_on:
100+
- osm-web
101+
#labels:
102+
# - traefik.enable=true
103+
# - traefik.http.routers.osm-log-proxy.rule=Host(`${WS_OSM_HOST}`)
104+
# - traefik.http.services.osm-log-proxy.loadbalancer.server.port=80
105+
# - traefik.http.routers.osm-log-proxy.entrypoints=websecure
106+
# - traefik.http.routers.osm-log-proxy.tls.certresolver=myresolver
107+
108+
osm-web:
109+
image: ${WS_DOCKER_REGISTRY}/workspaces-osm-web:${WS_DOCKER_TAG}
110+
restart: always
111+
depends_on:
112+
- osm-rails
113+
- osm-cgimap
114+
labels:
115+
- traefik.enable=true
116+
- traefik.http.routers.osm-web.rule=Host(`${WS_OSM_HOST}`)
117+
- traefik.http.services.osm-web.loadbalancer.server.port=80
118+
- traefik.http.routers.osm-web.entrypoints=websecure
119+
- traefik.http.routers.osm-web.tls.certresolver=myresolver
120+
121+
osm-web-old:
122+
image: ${WS_DOCKER_REGISTRY}/workspaces-osm-web:${WS_DOCKER_TAG}
123+
restart: always
124+
depends_on:
125+
- osm-rails
126+
- osm-cgimap
127+
labels:
128+
- traefik.enable=true
129+
- traefik.http.routers.osm-web-old.rule=Host(`${WS_OLD_OSM_HOST}`)
130+
- traefik.http.services.osm-web-old.loadbalancer.server.port=80
131+
- traefik.http.routers.osm-web-old.entrypoints=websecure
132+
- traefik.http.routers.osm-web-old.tls.certresolver=myresolver
133+
134+
osm-rails:
135+
<<: *osm-rails-base
136+
command: bundle exec rails s -p 3000 -b '0.0.0.0'
137+
138+
osm-rails-worker:
139+
<<: *osm-rails-base
140+
command: bundle exec rake jobs:work
141+
142+
osm-cgimap:
143+
image: ${WS_DOCKER_REGISTRY}/workspaces-osm-cgimap:${WS_DOCKER_TAG}
144+
restart: always
145+
environment:
146+
CGIMAP_HOST: ${WS_OSM_DB_HOST}
147+
CGIMAP_USERNAME: ${WS_OSM_DB_USER}
148+
CGIMAP_PASSWORD: ${WS_OSM_DB_PASS}
149+
CGIMAP_DBNAME: ${WS_OSM_DB_NAME}
150+
CGIMAP_MAX_CHANGESET_ELEMENTS: ${WS_OSM_MAX_CHANGESET_ELEMENTS}
151+
CGIMAP_MAX_PAYLOAD: ${WS_OSM_MAX_UPLOAD_BYTES}
152+
CGIMAP_MAP_NODES: ${WS_OSM_MAX_EXPORT_NODES}
153+
CGIMAP_MAP_AREA: ${WS_OSM_MAX_EXPORT_AREA}
154+
155+
tasks-frontend:
156+
image: ${WS_DOCKER_REGISTRY}/workspaces-tasks-frontend:${WS_DOCKER_TAG}
157+
restart: always
158+
labels:
159+
- traefik.enable=true
160+
- traefik.http.routers.tasks-frontend.rule=Host(`${WS_TASKS_HOST}`)
161+
- traefik.http.services.tasks-frontend.loadbalancer.server.port=80
162+
- traefik.http.routers.tasks-frontend.entrypoints=websecure
163+
- traefik.http.routers.tasks-frontend.tls.certresolver=myresolver
164+
165+
tasks-backend:
166+
image: ${WS_DOCKER_REGISTRY}/workspaces-tasks-backend:${WS_DOCKER_TAG}
167+
restart: always
168+
env_file: tasking-manager/tasking-manager.env
169+
environment:
170+
GUNICORN_CMD_ARGS: "--workers 5 --threads 5 --timeout 179"
171+
labels:
172+
- traefik.enable=true
173+
- traefik.http.routers.tasks-backend.rule=Host(`${WS_TASKS_HOST}`) && PathPrefix(`/api/`)
174+
- traefik.http.services.tasks-backend.loadbalancer.server.port=5000
175+
- traefik.http.routers.tasks-backend.entrypoints=websecure
176+
- traefik.http.routers.tasks-backend.tls.certresolver=myresolver
177+
178+
tasks-backend-old:
179+
image: ${WS_DOCKER_REGISTRY}/workspaces-tasks-backend:${WS_DOCKER_TAG}
180+
restart: always
181+
env_file: tasking-manager/tasking-manager.env
182+
environment:
183+
GUNICORN_CMD_ARGS: "--workers 5 --threads 5 --timeout 179"
184+
labels:
185+
- traefik.enable=true
186+
- traefik.http.routers.tasks-backend-old.rule=Host(`${WS_OLD_TASKS_HOST}`) && PathPrefix(`/api/`)
187+
- traefik.http.services.tasks-backend-old.loadbalancer.server.port=5000
188+
- traefik.http.routers.tasks-backend-old.entrypoints=websecure
189+
- traefik.http.routers.tasks-backend-old.tls.certresolver=myresolver
190+
191+
volumes:
192+
osm-rails-tmp:
193+
osm-rails-storage:

0 commit comments

Comments
 (0)