From d46f455c03416d0bb8e28002957d6726f3d8776b Mon Sep 17 00:00:00 2001 From: Ashwin Kumar Date: Thu, 9 Apr 2026 22:18:30 +0200 Subject: [PATCH] fix: use unique ports 9100-9117 (avoids conflicts with BrowserOS on 9000/9103) --- apps/catering_services/src/main.rs | 2 +- apps/companies/src/main.rs | 2 +- apps/customers/src/main.rs | 2 +- apps/developers/src/main.rs | 2 +- apps/employees/src/main.rs | 6 +- apps/fitness_trainers/src/main.rs | 2 +- apps/gateway/src/main.rs | 34 +-- apps/graphic_designers/src/main.rs | 2 +- apps/job_seekers/src/main.rs | 2 +- apps/makeup_artists/src/main.rs | 2 +- apps/payments/src/main.rs | 2 +- apps/photographers/src/main.rs | 2 +- apps/social_media_managers/src/main.rs | 2 +- apps/tutors/src/main.rs | 2 +- apps/ugc_content_creators/src/main.rs | 2 +- apps/users/src/main.rs | 2 +- apps/video_editors/src/main.rs | 2 +- docker-compose.yml | 316 ++++++++++++------------- 18 files changed, 192 insertions(+), 194 deletions(-) diff --git a/apps/catering_services/src/main.rs b/apps/catering_services/src/main.rs index a0ce3b9..8db6ba3 100644 --- a/apps/catering_services/src/main.rs +++ b/apps/catering_services/src/main.rs @@ -39,7 +39,7 @@ async fn main() { .with_state(state); let port: u16 = std::env::var("PORT") - .unwrap_or_else(|_| "8093".to_string()) + .unwrap_or_else(|_| "9115".to_string()) .parse() .expect("PORT must be a number"); let addr = SocketAddr::from(([0, 0, 0, 0], port)); diff --git a/apps/companies/src/main.rs b/apps/companies/src/main.rs index d040c56..14d0e75 100644 --- a/apps/companies/src/main.rs +++ b/apps/companies/src/main.rs @@ -40,7 +40,7 @@ async fn main() { .with_state(state); let port: u16 = std::env::var("PORT") - .unwrap_or_else(|_| "8081".to_string()) + .unwrap_or_else(|_| "9102".to_string()) .parse() .expect("PORT must be a number"); let addr = SocketAddr::from(([0, 0, 0, 0], port)); diff --git a/apps/customers/src/main.rs b/apps/customers/src/main.rs index b904caa..6e2cb72 100644 --- a/apps/customers/src/main.rs +++ b/apps/customers/src/main.rs @@ -41,7 +41,7 @@ async fn main() { .with_state(state); let port: u16 = std::env::var("PORT") - .unwrap_or_else(|_| "8083".to_string()) + .unwrap_or_else(|_| "9105".to_string()) .parse() .expect("PORT must be a number"); let addr = SocketAddr::from(([0, 0, 0, 0], port)); diff --git a/apps/developers/src/main.rs b/apps/developers/src/main.rs index 5d46e98..10a59f8 100644 --- a/apps/developers/src/main.rs +++ b/apps/developers/src/main.rs @@ -39,7 +39,7 @@ async fn main() { .with_state(state); let port: u16 = std::env::var("PORT") - .unwrap_or_else(|_| "8088".to_string()) + .unwrap_or_else(|_| "9110".to_string()) .parse() .expect("PORT must be a number"); let addr = SocketAddr::from(([0, 0, 0, 0], port)); diff --git a/apps/employees/src/main.rs b/apps/employees/src/main.rs index b213c5a..3608c3d 100644 --- a/apps/employees/src/main.rs +++ b/apps/employees/src/main.rs @@ -65,10 +65,10 @@ async fn main() { .route("/health", get(|| async { "Employees OK" })) .with_state(state); - let port: u16 = std::env::var("EMPLOYEES_PORT") - .unwrap_or_else(|_| "8085".to_string()) + let port: u16 = std::env::var("PORT") + .unwrap_or_else(|_| "9106".to_string()) .parse() - .expect("EMPLOYEES_PORT must be a valid u16"); + .expect("PORT must be a valid u16"); let addr = SocketAddr::from(([0, 0, 0, 0], port)); tracing::info!("Employees service listening on {}", addr); diff --git a/apps/fitness_trainers/src/main.rs b/apps/fitness_trainers/src/main.rs index 7e97266..0307001 100644 --- a/apps/fitness_trainers/src/main.rs +++ b/apps/fitness_trainers/src/main.rs @@ -39,7 +39,7 @@ async fn main() { .with_state(state); let port: u16 = std::env::var("PORT") - .unwrap_or_else(|_| "8092".to_string()) + .unwrap_or_else(|_| "9114".to_string()) .parse() .expect("PORT must be a number"); let addr = SocketAddr::from(([0, 0, 0, 0], port)); diff --git a/apps/gateway/src/main.rs b/apps/gateway/src/main.rs index ff14518..41badb9 100644 --- a/apps/gateway/src/main.rs +++ b/apps/gateway/src/main.rs @@ -38,37 +38,37 @@ impl Services { fn from_env() -> Self { Self { users_url: std::env::var("USERS_SERVICE_URL") - .unwrap_or_else(|_| "http://localhost:8080".to_string()), + .unwrap_or_else(|_| "http://localhost:9101".to_string()), companies_url: std::env::var("COMPANIES_SERVICE_URL") - .unwrap_or_else(|_| "http://localhost:8081".to_string()), + .unwrap_or_else(|_| "http://localhost:9102".to_string()), job_seekers_url: std::env::var("JOB_SEEKERS_SERVICE_URL") - .unwrap_or_else(|_| "http://localhost:8082".to_string()), + .unwrap_or_else(|_| "http://localhost:9104".to_string()), customers_url: std::env::var("CUSTOMERS_SERVICE_URL") - .unwrap_or_else(|_| "http://localhost:8083".to_string()), + .unwrap_or_else(|_| "http://localhost:9105".to_string()), photographers_url: std::env::var("PHOTOGRAPHERS_SERVICE_URL") - .unwrap_or_else(|_| "http://localhost:8085".to_string()), + .unwrap_or_else(|_| "http://localhost:9107".to_string()), makeup_artists_url: std::env::var("MAKEUP_ARTISTS_SERVICE_URL") - .unwrap_or_else(|_| "http://localhost:8086".to_string()), + .unwrap_or_else(|_| "http://localhost:9109".to_string()), tutors_url: std::env::var("TUTORS_SERVICE_URL") - .unwrap_or_else(|_| "http://localhost:8087".to_string()), + .unwrap_or_else(|_| "http://localhost:9108".to_string()), developers_url: std::env::var("DEVELOPERS_SERVICE_URL") - .unwrap_or_else(|_| "http://localhost:8088".to_string()), + .unwrap_or_else(|_| "http://localhost:9110".to_string()), video_editors_url: std::env::var("VIDEO_EDITORS_SERVICE_URL") - .unwrap_or_else(|_| "http://localhost:8089".to_string()), + .unwrap_or_else(|_| "http://localhost:9111".to_string()), graphic_designers_url: std::env::var("GRAPHIC_DESIGNERS_SERVICE_URL") - .unwrap_or_else(|_| "http://localhost:8090".to_string()), + .unwrap_or_else(|_| "http://localhost:9112".to_string()), social_media_managers_url: std::env::var("SOCIAL_MEDIA_MANAGERS_SERVICE_URL") - .unwrap_or_else(|_| "http://localhost:8091".to_string()), + .unwrap_or_else(|_| "http://localhost:9113".to_string()), fitness_trainers_url: std::env::var("FITNESS_TRAINERS_SERVICE_URL") - .unwrap_or_else(|_| "http://localhost:8092".to_string()), + .unwrap_or_else(|_| "http://localhost:9114".to_string()), catering_services_url: std::env::var("CATERING_SERVICES_SERVICE_URL") - .unwrap_or_else(|_| "http://localhost:8093".to_string()), + .unwrap_or_else(|_| "http://localhost:9115".to_string()), ugc_content_creators_url: std::env::var("UGC_CONTENT_CREATORS_SERVICE_URL") - .unwrap_or_else(|_| "http://localhost:8095".to_string()), + .unwrap_or_else(|_| "http://localhost:9117".to_string()), payments_url: std::env::var("PAYMENTS_SERVICE_URL") - .unwrap_or_else(|_| "http://localhost:8094".to_string()), + .unwrap_or_else(|_| "http://localhost:9116".to_string()), employees_url: std::env::var("EMPLOYEES_SERVICE_URL") - .unwrap_or_else(|_| "http://localhost:8096".to_string()), + .unwrap_or_else(|_| "http://localhost:9106".to_string()), client: reqwest::Client::new(), } } @@ -240,7 +240,7 @@ async fn main() { .with_state(services); let port: u16 = std::env::var("PORT") - .unwrap_or_else(|_| "8000".to_string()) + .unwrap_or_else(|_| "9100".to_string()) .parse() .expect("PORT must be a valid u16"); let addr = SocketAddr::from(([0, 0, 0, 0], port)); diff --git a/apps/graphic_designers/src/main.rs b/apps/graphic_designers/src/main.rs index bd64f0a..3b414f6 100644 --- a/apps/graphic_designers/src/main.rs +++ b/apps/graphic_designers/src/main.rs @@ -39,7 +39,7 @@ async fn main() { .with_state(state); let port: u16 = std::env::var("PORT") - .unwrap_or_else(|_| "8090".to_string()) + .unwrap_or_else(|_| "9112".to_string()) .parse() .expect("PORT must be a number"); let addr = SocketAddr::from(([0, 0, 0, 0], port)); diff --git a/apps/job_seekers/src/main.rs b/apps/job_seekers/src/main.rs index 9467f5a..953c210 100644 --- a/apps/job_seekers/src/main.rs +++ b/apps/job_seekers/src/main.rs @@ -39,7 +39,7 @@ async fn main() { .with_state(state); let port: u16 = std::env::var("PORT") - .unwrap_or_else(|_| "8082".to_string()) + .unwrap_or_else(|_| "9104".to_string()) .parse() .expect("PORT must be a number"); let addr = SocketAddr::from(([0, 0, 0, 0], port)); diff --git a/apps/makeup_artists/src/main.rs b/apps/makeup_artists/src/main.rs index 28bac1b..5ead2cc 100644 --- a/apps/makeup_artists/src/main.rs +++ b/apps/makeup_artists/src/main.rs @@ -39,7 +39,7 @@ async fn main() { .with_state(state); let port: u16 = std::env::var("PORT") - .unwrap_or_else(|_| "8087".to_string()) + .unwrap_or_else(|_| "9109".to_string()) .parse() .expect("PORT must be a number"); let addr = SocketAddr::from(([0, 0, 0, 0], port)); diff --git a/apps/payments/src/main.rs b/apps/payments/src/main.rs index 60d5e38..dae5f01 100644 --- a/apps/payments/src/main.rs +++ b/apps/payments/src/main.rs @@ -351,7 +351,7 @@ async fn main() { .with_state(state); let port: u16 = std::env::var("PORT") - .unwrap_or_else(|_| "8094".to_string()) + .unwrap_or_else(|_| "9116".to_string()) .parse() .expect("PORT must be a valid u16"); let addr = SocketAddr::from(([0, 0, 0, 0], port)); diff --git a/apps/photographers/src/main.rs b/apps/photographers/src/main.rs index 3515a74..2837a6c 100644 --- a/apps/photographers/src/main.rs +++ b/apps/photographers/src/main.rs @@ -39,7 +39,7 @@ async fn main() { .with_state(state); let port: u16 = std::env::var("PORT") - .unwrap_or_else(|_| "8085".to_string()) + .unwrap_or_else(|_| "9107".to_string()) .parse() .expect("PORT must be a number"); let addr = SocketAddr::from(([0, 0, 0, 0], port)); diff --git a/apps/social_media_managers/src/main.rs b/apps/social_media_managers/src/main.rs index b35a739..e831275 100644 --- a/apps/social_media_managers/src/main.rs +++ b/apps/social_media_managers/src/main.rs @@ -39,7 +39,7 @@ async fn main() { .with_state(state); let port: u16 = std::env::var("PORT") - .unwrap_or_else(|_| "8091".to_string()) + .unwrap_or_else(|_| "9113".to_string()) .parse() .expect("PORT must be a number"); let addr = SocketAddr::from(([0, 0, 0, 0], port)); diff --git a/apps/tutors/src/main.rs b/apps/tutors/src/main.rs index fa1b9d9..626eccb 100644 --- a/apps/tutors/src/main.rs +++ b/apps/tutors/src/main.rs @@ -39,7 +39,7 @@ async fn main() { .with_state(state); let port: u16 = std::env::var("PORT") - .unwrap_or_else(|_| "8086".to_string()) + .unwrap_or_else(|_| "9108".to_string()) .parse() .expect("PORT must be a number"); let addr = SocketAddr::from(([0, 0, 0, 0], port)); diff --git a/apps/ugc_content_creators/src/main.rs b/apps/ugc_content_creators/src/main.rs index 6ea2f55..ca7dbe3 100644 --- a/apps/ugc_content_creators/src/main.rs +++ b/apps/ugc_content_creators/src/main.rs @@ -37,7 +37,7 @@ async fn main() { .with_state(state); let port: u16 = std::env::var("PORT") - .unwrap_or_else(|_| "8095".to_string()) + .unwrap_or_else(|_| "9117".to_string()) .parse() .expect("PORT must be a number"); let addr = SocketAddr::from(([0, 0, 0, 0], port)); diff --git a/apps/users/src/main.rs b/apps/users/src/main.rs index f808357..da57fb3 100644 --- a/apps/users/src/main.rs +++ b/apps/users/src/main.rs @@ -107,7 +107,7 @@ async fn main() { let port: u16 = std::env::var("PORT") - .unwrap_or_else(|_| "8080".to_string()) + .unwrap_or_else(|_| "9101".to_string()) .parse() .expect("PORT must be a valid u16"); let addr = SocketAddr::from(([0, 0, 0, 0], port)); diff --git a/apps/video_editors/src/main.rs b/apps/video_editors/src/main.rs index dc77bb0..9dad23f 100644 --- a/apps/video_editors/src/main.rs +++ b/apps/video_editors/src/main.rs @@ -39,7 +39,7 @@ async fn main() { .with_state(state); let port: u16 = std::env::var("PORT") - .unwrap_or_else(|_| "8089".to_string()) + .unwrap_or_else(|_| "9111".to_string()) .parse() .expect("PORT must be a number"); let addr = SocketAddr::from(([0, 0, 0, 0], port)); diff --git a/docker-compose.yml b/docker-compose.yml index 768a5d3..4ae8576 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,20 +1,18 @@ -version: '3.9' - services: postgres: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: nxtgauge - POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-nxtgauge_dev} + POSTGRES_PASSWORD: nxtgauge_dev POSTGRES_DB: nxtgauge_db ports: - - '5432:5432' + - "5432:5432" volumes: - pgdata:/var/lib/postgresql/data - - ./scripts/init-db.sql:/docker-entrypoint-initdb.d/init.sql + - ./scripts/seed.sql:/docker-entrypoint-initdb.d/seed.sql healthcheck: - test: ['CMD-SHELL', 'pg_isready -U nxtgauge -d nxtgauge_db'] + test: ["CMD-SHELL", "pg_isready -U nxtgauge -d nxtgauge_db"] interval: 5s timeout: 5s retries: 10 @@ -23,63 +21,93 @@ services: image: redis:7-alpine restart: unless-stopped ports: - - '6379:6379' + - "6379:6379" volumes: - redisdata:/data command: redis-server --appendonly yes healthcheck: - test: ['CMD', 'redis-cli', 'ping'] + test: ["CMD", "redis-cli", "ping"] interval: 5s timeout: 5s retries: 10 - # ── Core Services ──────────────────────────────────────────────────────── + # ── Gateway ─────────────────────────────────────────────────────────────── gateway: - build: - context: . - dockerfile: apps/gateway/Dockerfile - environment: - PORT: 8000 - USERS_SERVICE_URL: http://users:8080 - COMPANIES_SERVICE_URL: http://companies:8081 - JOB_SEEKERS_SERVICE_URL: http://job_seekers:8082 - CUSTOMERS_SERVICE_URL: http://customers:8083 - PHOTOGRAPHERS_SERVICE_URL: http://photographers:8085 - MAKEUP_ARTISTS_SERVICE_URL: http://makeup_artists:8086 - TUTORS_SERVICE_URL: http://tutors:8087 - DEVELOPERS_SERVICE_URL: http://developers:8088 - VIDEO_EDITORS_SERVICE_URL: http://video_editors:8089 - GRAPHIC_DESIGNERS_SERVICE_URL: http://graphic_designers:8090 - SOCIAL_MEDIA_MANAGERS_SERVICE_URL: http://social_media_managers:8091 - FITNESS_TRAINERS_SERVICE_URL: http://fitness_trainers:8092 - CATERING_SERVICES_SERVICE_URL: http://catering_services:8093 - PAYMENTS_SERVICE_URL: http://payments:8094 - REDIS_URL: redis://redis:6379 + image: ghcr.io/traceworks2023/nxtgauge-rust-gateway:high-performance-latest ports: - - '8000:8000' + - "9100:9100" + environment: + PORT: "9100" + DATABASE_URL: postgresql://nxtgauge:nxtgauge_dev@postgres:5432/nxtgauge_db + REDIS_URL: redis://redis:6379 + JWT_SECRET: local_dev_jwt_secret + RUST_LOG: info + FRONTEND_URL: http://localhost:3000 + ADMIN_URL: http://localhost:4000 + USERS_SERVICE_URL: http://users:9101 + COMPANIES_SERVICE_URL: http://companies:9102 + JOB_SEEKERS_SERVICE_URL: http://job-seekers:9104 + CUSTOMERS_SERVICE_URL: http://customers:9105 + EMPLOYEES_SERVICE_URL: http://employees:9106 + PHOTOGRAPHERS_SERVICE_URL: http://photographers:9107 + TUTORS_SERVICE_URL: http://tutors:9108 + MAKEUP_ARTISTS_SERVICE_URL: http://makeup-artists:9109 + DEVELOPERS_SERVICE_URL: http://developers:9110 + VIDEO_EDITORS_SERVICE_URL: http://video-editors:9111 + GRAPHIC_DESIGNERS_SERVICE_URL: http://graphic-designers:9112 + SOCIAL_MEDIA_MANAGERS_SERVICE_URL: http://social-media-managers:9113 + FITNESS_TRAINERS_SERVICE_URL: http://fitness-trainers:9114 + CATERING_SERVICES_SERVICE_URL: http://catering-services:9115 + PAYMENTS_SERVICE_URL: http://payments:9116 + UGC_CONTENT_CREATORS_SERVICE_URL: http://ugc-content-creators:9117 depends_on: postgres: condition: service_healthy redis: condition: service_healthy + users: + condition: service_started + companies: + condition: service_started + job-seekers: + condition: service_started + customers: + condition: service_started + employees: + condition: service_started + photographers: + condition: service_started + tutors: + condition: service_started + makeup-artists: + condition: service_started + developers: + condition: service_started + video-editors: + condition: service_started + graphic-designers: + condition: service_started + social-media-managers: + condition: service_started + fitness-trainers: + condition: service_started + catering-services: + condition: service_started + payments: + condition: service_started + ugc-content-creators: + condition: service_started + + # ── Core Services ───────────────────────────────────────────────────────── users: - build: - context: . - dockerfile: apps/users/Dockerfile + image: ghcr.io/traceworks2023/nxtgauge-rust-users:high-performance-latest environment: - PORT: 8080 - DATABASE_URL: postgresql://nxtgauge:${POSTGRES_PASSWORD:-nxtgauge_dev}@postgres:5432/nxtgauge_db + PORT: "9101" + DATABASE_URL: postgresql://nxtgauge:nxtgauge_dev@postgres:5432/nxtgauge_db REDIS_URL: redis://redis:6379 - JWT_SECRET: ${JWT_SECRET} - JWT_EXPIRY_MINUTES: 15 - REFRESH_TOKEN_EXPIRY_DAYS: 30 - FRONTEND_URL: ${FRONTEND_URL:-http://localhost:3000} - SMTP_HOST: ${SMTP_HOST:-} - SMTP_PORT: ${SMTP_PORT:-587} - SMTP_USER: ${SMTP_USER:-} - SMTP_PASS: ${SMTP_PASS:-} + JWT_SECRET: local_dev_jwt_secret depends_on: postgres: condition: service_healthy @@ -87,29 +115,25 @@ services: condition: service_healthy companies: - build: - context: . - dockerfile: apps/companies/Dockerfile + image: ghcr.io/traceworks2023/nxtgauge-rust-companies:high-performance-latest environment: - PORT: 8081 - DATABASE_URL: postgresql://nxtgauge:${POSTGRES_PASSWORD:-nxtgauge_dev}@postgres:5432/nxtgauge_db + PORT: "9102" + DATABASE_URL: postgresql://nxtgauge:nxtgauge_dev@postgres:5432/nxtgauge_db REDIS_URL: redis://redis:6379 - JWT_SECRET: ${JWT_SECRET} + JWT_SECRET: local_dev_jwt_secret depends_on: postgres: condition: service_healthy redis: condition: service_healthy - job_seekers: - build: - context: . - dockerfile: apps/job_seekers/Dockerfile + job-seekers: + image: ghcr.io/traceworks2023/nxtgauge-rust-job-seekers:high-performance-latest environment: - PORT: 8082 - DATABASE_URL: postgresql://nxtgauge:${POSTGRES_PASSWORD:-nxtgauge_dev}@postgres:5432/nxtgauge_db + PORT: "9104" + DATABASE_URL: postgresql://nxtgauge:nxtgauge_dev@postgres:5432/nxtgauge_db REDIS_URL: redis://redis:6379 - JWT_SECRET: ${JWT_SECRET} + JWT_SECRET: local_dev_jwt_secret depends_on: postgres: condition: service_healthy @@ -117,14 +141,25 @@ services: condition: service_healthy customers: - build: - context: . - dockerfile: apps/customers/Dockerfile + image: ghcr.io/traceworks2023/nxtgauge-rust-customers:high-performance-latest environment: - PORT: 8083 - DATABASE_URL: postgresql://nxtgauge:${POSTGRES_PASSWORD:-nxtgauge_dev}@postgres:5432/nxtgauge_db + PORT: "9105" + DATABASE_URL: postgresql://nxtgauge:nxtgauge_dev@postgres:5432/nxtgauge_db REDIS_URL: redis://redis:6379 - JWT_SECRET: ${JWT_SECRET} + JWT_SECRET: local_dev_jwt_secret + depends_on: + postgres: + condition: service_healthy + redis: + condition: service_healthy + + employees: + image: ghcr.io/traceworks2023/nxtgauge-rust-employees:high-performance-latest + environment: + PORT: "9106" + DATABASE_URL: postgresql://nxtgauge:nxtgauge_dev@postgres:5432/nxtgauge_db + REDIS_URL: redis://redis:6379 + JWT_SECRET: local_dev_jwt_secret depends_on: postgres: condition: service_healthy @@ -134,29 +169,12 @@ services: # ── 9 Profession Services ───────────────────────────────────────────────── photographers: - build: - context: . - dockerfile: apps/photographers/Dockerfile + image: ghcr.io/traceworks2023/nxtgauge-rust-photographers:high-performance-latest environment: - PORT: 8085 - DATABASE_URL: postgresql://nxtgauge:${POSTGRES_PASSWORD:-nxtgauge_dev}@postgres:5432/nxtgauge_db + PORT: "9107" + DATABASE_URL: postgresql://nxtgauge:nxtgauge_dev@postgres:5432/nxtgauge_db REDIS_URL: redis://redis:6379 - JWT_SECRET: ${JWT_SECRET} - depends_on: - postgres: - condition: service_healthy - redis: - condition: service_healthy - - makeup_artists: - build: - context: . - dockerfile: apps/makeup_artists/Dockerfile - environment: - PORT: 8086 - DATABASE_URL: postgresql://nxtgauge:${POSTGRES_PASSWORD:-nxtgauge_dev}@postgres:5432/nxtgauge_db - REDIS_URL: redis://redis:6379 - JWT_SECRET: ${JWT_SECRET} + JWT_SECRET: local_dev_jwt_secret depends_on: postgres: condition: service_healthy @@ -164,14 +182,25 @@ services: condition: service_healthy tutors: - build: - context: . - dockerfile: apps/tutors/Dockerfile + image: ghcr.io/traceworks2023/nxtgauge-rust-tutors:high-performance-latest environment: - PORT: 8087 - DATABASE_URL: postgresql://nxtgauge:${POSTGRES_PASSWORD:-nxtgauge_dev}@postgres:5432/nxtgauge_db + PORT: "9108" + DATABASE_URL: postgresql://nxtgauge:nxtgauge_dev@postgres:5432/nxtgauge_db REDIS_URL: redis://redis:6379 - JWT_SECRET: ${JWT_SECRET} + JWT_SECRET: local_dev_jwt_secret + depends_on: + postgres: + condition: service_healthy + redis: + condition: service_healthy + + makeup-artists: + image: ghcr.io/traceworks2023/nxtgauge-rust-makeup-artists:high-performance-latest + environment: + PORT: "9109" + DATABASE_URL: postgresql://nxtgauge:nxtgauge_dev@postgres:5432/nxtgauge_db + REDIS_URL: redis://redis:6379 + JWT_SECRET: local_dev_jwt_secret depends_on: postgres: condition: service_healthy @@ -179,89 +208,77 @@ services: condition: service_healthy developers: - build: - context: . - dockerfile: apps/developers/Dockerfile + image: ghcr.io/traceworks2023/nxtgauge-rust-developers:high-performance-latest environment: - PORT: 8088 - DATABASE_URL: postgresql://nxtgauge:${POSTGRES_PASSWORD:-nxtgauge_dev}@postgres:5432/nxtgauge_db + PORT: "9110" + DATABASE_URL: postgresql://nxtgauge:nxtgauge_dev@postgres:5432/nxtgauge_db REDIS_URL: redis://redis:6379 - JWT_SECRET: ${JWT_SECRET} + JWT_SECRET: local_dev_jwt_secret depends_on: postgres: condition: service_healthy redis: condition: service_healthy - video_editors: - build: - context: . - dockerfile: apps/video_editors/Dockerfile + video-editors: + image: ghcr.io/traceworks2023/nxtgauge-rust-video-editors:high-performance-latest environment: - PORT: 8089 - DATABASE_URL: postgresql://nxtgauge:${POSTGRES_PASSWORD:-nxtgauge_dev}@postgres:5432/nxtgauge_db + PORT: "9111" + DATABASE_URL: postgresql://nxtgauge:nxtgauge_dev@postgres:5432/nxtgauge_db REDIS_URL: redis://redis:6379 - JWT_SECRET: ${JWT_SECRET} + JWT_SECRET: local_dev_jwt_secret depends_on: postgres: condition: service_healthy redis: condition: service_healthy - graphic_designers: - build: - context: . - dockerfile: apps/graphic_designers/Dockerfile + graphic-designers: + image: ghcr.io/traceworks2023/nxtgauge-rust-graphic-designers:high-performance-latest environment: - PORT: 8090 - DATABASE_URL: postgresql://nxtgauge:${POSTGRES_PASSWORD:-nxtgauge_dev}@postgres:5432/nxtgauge_db + PORT: "9112" + DATABASE_URL: postgresql://nxtgauge:nxtgauge_dev@postgres:5432/nxtgauge_db REDIS_URL: redis://redis:6379 - JWT_SECRET: ${JWT_SECRET} + JWT_SECRET: local_dev_jwt_secret depends_on: postgres: condition: service_healthy redis: condition: service_healthy - social_media_managers: - build: - context: . - dockerfile: apps/social_media_managers/Dockerfile + social-media-managers: + image: ghcr.io/traceworks2023/nxtgauge-rust-social-media-managers:high-performance-latest environment: - PORT: 8091 - DATABASE_URL: postgresql://nxtgauge:${POSTGRES_PASSWORD:-nxtgauge_dev}@postgres:5432/nxtgauge_db + PORT: "9113" + DATABASE_URL: postgresql://nxtgauge:nxtgauge_dev@postgres:5432/nxtgauge_db REDIS_URL: redis://redis:6379 - JWT_SECRET: ${JWT_SECRET} + JWT_SECRET: local_dev_jwt_secret depends_on: postgres: condition: service_healthy redis: condition: service_healthy - fitness_trainers: - build: - context: . - dockerfile: apps/fitness_trainers/Dockerfile + fitness-trainers: + image: ghcr.io/traceworks2023/nxtgauge-rust-fitness-trainers:high-performance-latest environment: - PORT: 8092 - DATABASE_URL: postgresql://nxtgauge:${POSTGRES_PASSWORD:-nxtgauge_dev}@postgres:5432/nxtgauge_db + PORT: "9114" + DATABASE_URL: postgresql://nxtgauge:nxtgauge_dev@postgres:5432/nxtgauge_db REDIS_URL: redis://redis:6379 - JWT_SECRET: ${JWT_SECRET} + JWT_SECRET: local_dev_jwt_secret depends_on: postgres: condition: service_healthy redis: condition: service_healthy - catering_services: - build: - context: . - dockerfile: apps/catering_services/Dockerfile + catering-services: + image: ghcr.io/traceworks2023/nxtgauge-rust-catering-services:high-performance-latest environment: - PORT: 8093 - DATABASE_URL: postgresql://nxtgauge:${POSTGRES_PASSWORD:-nxtgauge_dev}@postgres:5432/nxtgauge_db + PORT: "9115" + DATABASE_URL: postgresql://nxtgauge:nxtgauge_dev@postgres:5432/nxtgauge_db REDIS_URL: redis://redis:6379 - JWT_SECRET: ${JWT_SECRET} + JWT_SECRET: local_dev_jwt_secret depends_on: postgres: condition: service_healthy @@ -271,46 +288,27 @@ services: # ── Payments ────────────────────────────────────────────────────────────── payments: - build: - context: . - dockerfile: apps/payments/Dockerfile + image: ghcr.io/traceworks2023/nxtgauge-rust-payments:high-performance-latest environment: - PORT: 8094 - DATABASE_URL: postgresql://nxtgauge:${POSTGRES_PASSWORD:-nxtgauge_dev}@postgres:5432/nxtgauge_db + PORT: "9116" + DATABASE_URL: postgresql://nxtgauge:nxtgauge_dev@postgres:5432/nxtgauge_db REDIS_URL: redis://redis:6379 - JWT_SECRET: ${JWT_SECRET} - RAZORPAY_KEY_ID: ${RAZORPAY_KEY_ID:-} - RAZORPAY_KEY_SECRET: ${RAZORPAY_KEY_SECRET:-} + JWT_SECRET: local_dev_jwt_secret depends_on: postgres: condition: service_healthy redis: condition: service_healthy - employees: - build: - context: . - dockerfile: apps/employees/Dockerfile - environment: - PORT: 8095 - DATABASE_URL: postgresql://nxtgauge:${POSTGRES_PASSWORD:-nxtgauge_dev}@postgres:5432/nxtgauge_db - REDIS_URL: redis://redis:6379 - JWT_SECRET: ${JWT_SECRET} - depends_on: - postgres: - condition: service_healthy - redis: - condition: service_healthy + # ── UGC ─────────────────────────────────────────────────────────────────── - ugc_content_creators: - build: - context: . - dockerfile: apps/ugc_content_creators/Dockerfile + ugc-content-creators: + image: ghcr.io/traceworks2023/nxtgauge-rust-ugc-content-creators:high-performance-latest environment: - PORT: 8096 - DATABASE_URL: postgresql://nxtgauge:${POSTGRES_PASSWORD:-nxtgauge_dev}@postgres:5432/nxtgauge_db + PORT: "9117" + DATABASE_URL: postgresql://nxtgauge:nxtgauge_dev@postgres:5432/nxtgauge_db REDIS_URL: redis://redis:6379 - JWT_SECRET: ${JWT_SECRET} + JWT_SECRET: local_dev_jwt_secret depends_on: postgres: condition: service_healthy