diff --git a/docker-compose.production.yml b/docker-compose.production.yml index 00b9094..5757e65 100644 --- a/docker-compose.production.yml +++ b/docker-compose.production.yml @@ -1,5 +1,5 @@ services: - postgres: + db: image: postgres:16-alpine restart: unless-stopped networks: @@ -24,35 +24,24 @@ services: volumes: - redis_prod_data:/data - migrate: - build: - context: . - dockerfile: Dockerfile.production - command: ["sh", "-c", "npm run db:deploy"] - networks: - - internal - depends_on: - postgres: - condition: service_healthy - env_file: - - .env.docker.production - restart: "no" - api: build: context: . dockerfile: Dockerfile.production - command: ["npm", "run", "start", "--workspace", "@rentaldrivego/api"] + command: + - sh + - -c + - | + npm run db:deploy && + npm run start --workspace @rentaldrivego/api networks: - internal - traefik-proxy depends_on: - postgres: + db: condition: service_healthy redis: condition: service_started - migrate: - condition: service_completed_successfully env_file: - .env.docker.production restart: unless-stopped @@ -63,8 +52,7 @@ services: - traefik.http.routers.api.tls.certresolver=letsencrypt - traefik.http.services.api.loadbalancer.server.port=4000 - # homepage (public-site, port 3003) + marketplace (port 3000) in one container - web: + frontend: build: context: . dockerfile: Dockerfile.production @@ -74,6 +62,8 @@ services: - | npm run start --workspace @rentaldrivego/public-site & npm run start --workspace @rentaldrivego/marketplace & + npm run start --workspace @rentaldrivego/admin & + npm run start --workspace @rentaldrivego/dashboard & wait -n networks: - internal @@ -85,58 +75,30 @@ services: restart: unless-stopped labels: - traefik.enable=true - # homepage → public-site-svc (port 3003) - - traefik.http.routers.public-site.rule=Host(`${PUBLIC_SITE_DOMAIN}`) - - traefik.http.routers.public-site.entrypoints=websecure - - traefik.http.routers.public-site.tls.certresolver=letsencrypt - - traefik.http.routers.public-site.service=public-site-svc + # public-site (port 3003) + - traefik.http.routers.homepage.rule=Host(`rentaldrivego.ma`) || Host(`www.rentaldrivego.ma`) + - traefik.http.routers.homepage.entrypoints=websecure + - traefik.http.routers.homepage.tls.certresolver=letsencrypt + - traefik.http.routers.homepage.service=public-site-svc - traefik.http.services.public-site-svc.loadbalancer.server.port=3003 - # marketplace → marketplace-svc (port 3000) + # marketplace (port 3000) - traefik.http.routers.marketplace.rule=Host(`${MARKETPLACE_DOMAIN}`) - traefik.http.routers.marketplace.entrypoints=websecure - traefik.http.routers.marketplace.tls.certresolver=letsencrypt - traefik.http.routers.marketplace.service=marketplace-svc - traefik.http.services.marketplace-svc.loadbalancer.server.port=3000 - - admin: - build: - context: . - dockerfile: Dockerfile.production - command: ["npm", "run", "start", "--workspace", "@rentaldrivego/admin"] - networks: - - internal - - traefik-proxy - depends_on: - - api - env_file: - - .env.docker.production - restart: unless-stopped - labels: - - traefik.enable=true + # admin (port 3002) - traefik.http.routers.admin.rule=Host(`${ADMIN_DOMAIN}`) - traefik.http.routers.admin.entrypoints=websecure - traefik.http.routers.admin.tls.certresolver=letsencrypt - - traefik.http.services.admin.loadbalancer.server.port=3002 - - dashboard: - build: - context: . - dockerfile: Dockerfile.production - command: ["npm", "run", "start", "--workspace", "@rentaldrivego/dashboard"] - networks: - - internal - - traefik-proxy - depends_on: - - api - env_file: - - .env.docker.production - restart: unless-stopped - labels: - - traefik.enable=true + - traefik.http.routers.admin.service=admin-svc + - traefik.http.services.admin-svc.loadbalancer.server.port=3002 + # dashboard (port 3001) - traefik.http.routers.dashboard.rule=Host(`${DASHBOARD_DOMAIN}`) - traefik.http.routers.dashboard.entrypoints=websecure - traefik.http.routers.dashboard.tls.certresolver=letsencrypt - - traefik.http.services.dashboard.loadbalancer.server.port=3001 + - traefik.http.routers.dashboard.service=dashboard-svc + - traefik.http.services.dashboard-svc.loadbalancer.server.port=3001 pgmanage: image: cmdpromptinc/pgmanage-enterprise:latest @@ -146,7 +108,7 @@ services: - internal - traefik-proxy depends_on: - postgres: + db: condition: service_healthy environment: PGMANAGE_LISTEN_PORT: "8000"