From 5b1cdf7e402329424f0a3ba946f53df03e919614 Mon Sep 17 00:00:00 2001 From: Clawd Date: Sun, 1 Mar 2026 00:23:52 +0100 Subject: [PATCH] fix(staging): fix Traefik service linking with explicit service labels --- docker-compose.staging.yml | 32 ++++++++----------- scripts/create-staging.sh | 63 +++++--------------------------------- 2 files changed, 19 insertions(+), 76 deletions(-) diff --git a/docker-compose.staging.yml b/docker-compose.staging.yml index 37bd3b0..ff2fe38 100644 --- a/docker-compose.staging.yml +++ b/docker-compose.staging.yml @@ -1,29 +1,21 @@ -# Staging Docker Compose - Traefik version version: "3.8" - services: gravl-frontend: - container_name: staging-gravl-frontend-BRANCH_NAME + container_name: staging-gravl-frontend-PLACEHOLDER labels: - traefik.enable=true - - traefik.http.routers.staging-gravl-BRANCH_NAME.rule=Host(`BRANCH_NAME.gravl.homelab.local`) - - traefik.http.routers.staging-gravl-BRANCH_NAME.entrypoints=websecure - - traefik.http.routers.staging-gravl-BRANCH_NAME.tls=true - - traefik.http.services.staging-gravl-BRANCH_NAME.loadbalancer.server.port=80 - environment: - - VITE_API_URL=https://BRANCH_NAME.api.gravl.homelab.local + - traefik.http.routers.staging-gravl-PLACEHOLDER.rule=Host(`PLACEHOLDER.gravl.homelab.local`) + - traefik.http.routers.staging-gravl-PLACEHOLDER.entrypoints=websecure + - traefik.http.routers.staging-gravl-PLACEHOLDER.tls=true + - traefik.http.routers.staging-gravl-PLACEHOLDER.service=staging-gravl-PLACEHOLDER + - traefik.http.services.staging-gravl-PLACEHOLDER.loadbalancer.server.port=80 gravl-backend: - container_name: staging-gravl-backend-BRANCH_NAME + container_name: staging-gravl-backend-PLACEHOLDER labels: - traefik.enable=true - - traefik.http.routers.staging-gravl-BRANCH_NAME-api.rule=Host(`BRANCH_NAME.api.gravl.homelab.local`) - - traefik.http.routers.staging-gravl-BRANCH_NAME-api.entrypoints=websecure - - traefik.http.routers.staging-gravl-BRANCH_NAME-api.tls=true - - traefik.http.services.staging-gravl-BRANCH_NAME-api.loadbalancer.server.port=3001 - -networks: - proxy: - external: true - homelab: - external: true + - traefik.http.routers.staging-gravl-PLACEHOLDER-api.rule=Host(`PLACEHOLDER.api.gravl.homelab.local`) + - traefik.http.routers.staging-gravl-PLACEHOLDER-api.entrypoints=websecure + - traefik.http.routers.staging-gravl-PLACEHOLDER-api.tls=true + - traefik.http.routers.staging-gravl-PLACEHOLDER-api.service=staging-gravl-PLACEHOLDER-api + - traefik.http.services.staging-gravl-PLACEHOLDER-api.loadbalancer.server.port=3001 diff --git a/scripts/create-staging.sh b/scripts/create-staging.sh index 99dd15a..5b8aa26 100755 --- a/scripts/create-staging.sh +++ b/scripts/create-staging.sh @@ -1,61 +1,12 @@ #!/bin/bash -# Create staging environment for a branch - -BRANCH_NAME=${1:-} -if [ -z "$BRANCH_NAME" ]; then - echo "Usage: $0 " - echo "Example: $0 03-design-polish" - exit 1 -fi - -echo "Creating staging for branch: $BRANCH_NAME" - -# Create temp directory +BRANCH_NAME=$1 +if [ -z "$BRANCH_NAME" ]; then echo "Usage: $0 "; exit 1; fi STAGING_DIR=/tmp/staging-$BRANCH_NAME-$(date +%s) mkdir -p $STAGING_DIR - -# Clone repo -git clone --branch feature/$BRANCH_NAME /workspace/gravl "$STAGING_DIR" 2>/dev/null || { - echo "Failed to clone branch feature/$BRANCH_NAME" - exit 1 -} - +git clone --branch feature/$BRANCH_NAME /workspace/gravl "$STAGING_DIR" cd "$STAGING_DIR" - -# Replace placeholder with actual branch name -sed -i "s/BRANCH_NAME/$BRANCH_NAME/g" docker-compose.yml -cat docker-compose.staging.yml | sed "s/BRANCH_NAME/$BRANCH_NAME/g" > docker-compose.staging-override.yml - -# Create staging DB volume +sed -i "s/PLACEHOLDER/$BRANCH_NAME/g" docker-compose.staging.yml mkdir -p .staging - -# Start services -echo "Starting staging containers..." -docker compose -f docker-compose.yml -f docker-compose.staging-override.yml up -d - -# Register metadata -cat > ".staging/$BRANCH_NAME.json" << EOF -{ - "branch": "$BRANCH_NAME", - "featureBranch": "feature/$BRANCH_NAME", - "stagingUrl": "https://$BRANCH_NAME.gravl.homelab.local", - "apiUrl": "https://$BRANCH_NAME.api.gravl.homelab.local", - "created": "$(date -Iseconds)", - "status": "active", - "containers": { - "frontend": "staging-gravl-frontend-$BRANCH_NAME", - "backend": "staging-gravl-backend-$BRANCH_NAME", - "db": "staging-gravl-db-$BRANCH_NAME" - } -} -EOF - -echo "" -echo "✅ Staging environment ready!" -echo "" -echo "🌐 URL: https://$BRANCH_NAME.gravl.homelab.local" -echo "📡 API: https://$BRANCH_NAME.api.gravl.homelab.local" -echo "" -echo "Make sure to add to your /etc/hosts:" -echo " 192.168.1.XXX $BRANCH_NAME.gravl.homelab.local $BRANCH_NAME.api.gravl.homelab.local" -echo "" +docker compose -f docker-compose.yml -f docker-compose.staging.yml up -d --build +echo "{\"branch\":\"$BRANCH_NAME\",\"url\":\"https://$BRANCH_NAME.gravl.homelab.local\"}" > .staging/$BRANCH_NAME.json +echo "✅ Staging: https://$BRANCH_NAME.gravl.homelab.local"