From 9ed75693fe1c5d996977418e4a8539af3010bbc2 Mon Sep 17 00:00:00 2001
From: Marc-Antoine Manningham <marc-antoine.m@outlook.com>
Date: Tue, 22 Oct 2024 17:55:03 -0400
Subject: [PATCH] fix: include reverse proxy

---
 docker-compose.yml       | 49 ++++++++++++++++++++++++++++++++++++++++
 server/src/routes/mod.rs |  4 ----
 2 files changed, 49 insertions(+), 4 deletions(-)
 create mode 100644 docker-compose.yml

diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..c8070ff
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,49 @@
+services:
+  reverse-proxy:
+    image: traefik:v3.1
+    command:
+      - "--providers.docker=true"
+      - "--entryPoints.web.address=:80"
+      - "--entryPoints.websecure.address=:443"
+      - "--certificatesresolvers.myresolver.acme.httpchallenge=true"
+      - "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web"
+      - "--certificatesresolvers.myresolver.acme.email=mamanningham@cqi-qec.qc.ca" # change this to your email
+      - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"
+    environment:
+      - DATABASE_URL=postgres://${DB_USER}:${DB_PASSWORD}@${DB_HOST}:${DB_PORT}/${DB_NAME}
+    ports:
+      - "80:80"
+      - "443:443"
+    volumes:
+      - ./letsencrypt:/letsencrypt
+      - /var/run/docker.sock:/var/run/docker.sock
+  watchtower:
+    image: containrrr/watchtower
+    volumes:
+      - /var/run/docker.sock:/var/run/docker.sock
+  backend-cqi:
+    image: registry.git.step.polymtl.ca/lemark/cqi-qec2025:main
+    container_name: backend_cqi_container
+    labels:
+      - "traefik.http.routers.backend-cqi.rule=Host(`api.cqi-qec.qc.ca`)" # Put the URL here
+      - "traefik.http.services.backend-cqi.loadbalancer.server.port=6942"
+      - "traefik.http.routers.backend-cqi.entrypoints=websecure"
+      - "traefik.http.routers.backend-cqi.tls.certresolver=myresolver"
+    ports:
+      - "80:80" # Or any other port your web app uses
+    env_file:
+      - ./.env # Copy the .env file into the container
+    depends_on:
+      - postgres
+  postgres:
+    image: postgres
+    container_name: postgres_container
+    environment:
+      - POSTGRES_USER=${DB_USER}
+      - POSTGRES_PASSWORD=${DB_PASSWORD}
+    ports:
+      - "5432:5432"
+    volumes:
+      - postgres_data:/var/lib/postgresql/data
+volumes:
+  postgres_data:
diff --git a/server/src/routes/mod.rs b/server/src/routes/mod.rs
index ddebb1b..dc51889 100644
--- a/server/src/routes/mod.rs
+++ b/server/src/routes/mod.rs
@@ -15,10 +15,6 @@ pub mod patch_participant;
 pub mod test_token;
 
 pub fn api_router(state: SharedState) -> Router {
-    Router::new().nest("/api", api_handler(state))
-}
-
-fn api_handler(state: SharedState) -> Router {
     Router::new()
         .route("/health", get(|| async { (StatusCode::OK, "OK") }))
         .route(
-- 
GitLab