diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml index 245a975..2865cd7 100644 --- a/.github/workflows/docker-build.yml +++ b/.github/workflows/docker-build.yml @@ -53,6 +53,7 @@ jobs: type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=sha,prefix=sha- + type=raw,value=main,enable={{is_default_branch}} - name: Build React client working-directory: ./client @@ -95,6 +96,7 @@ jobs: type=semver,pattern={{version}} type=semver,pattern={{major}}.{{minor}} type=sha,prefix=sha- + type=raw,value=main,enable={{is_default_branch}} - name: Build and push Nginx image uses: docker/build-push-action@v5 diff --git a/docker-compose.temp-deploy.yml b/docker-compose.temp-deploy.yml new file mode 100644 index 0000000..1a81a42 --- /dev/null +++ b/docker-compose.temp-deploy.yml @@ -0,0 +1,89 @@ +services: + # Nginx reverse proxy and static file server (client baked into image) + nginx: + image: ghcr.io/dlawler489/etsy-finance-tracker-nginx:sha-99068d6 + container_name: etsy-nginx + ports: + - "3000:80" + depends_on: + - etsy-tracker + restart: unless-stopped + labels: + - "traefik.enable=true" + - "traefik.docker.network=traefik_default" + - "traefik.http.routers.etsy.rule=Host(`etsy.plexultra.com`)" + - "traefik.http.routers.etsy.entrypoints=websecure" + - "traefik.http.routers.etsy.tls.certresolver=le" + - "traefik.http.services.etsy.loadbalancer.server.port=80" + networks: + - etsy-network + - traefik_default + healthcheck: + test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost/"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 10s + + # Etsy Finance Tracker API Server (from GitHub Container Registry) + etsy-tracker: + image: ghcr.io/dlawler489/etsy-finance-tracker:sha-99068d6 + container_name: etsy-finance-tracker + expose: + - "8080" + environment: + - NODE_ENV=production + - PORT=8080 + - CLIENT_URL=http://nginx + - MONGODB_URI=mongodb://mongodb:27017/etsy-tracker + - JWT_SECRET=${JWT_SECRET:-changeme} + volumes: + - etsy_data:/app/data + - etsy_uploads:/app/uploads + depends_on: + - mongodb + restart: unless-stopped + networks: + - etsy-network + healthcheck: + test: ["CMD", "curl", "-f", "http://localhost:8080/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s + + # MongoDB database + mongodb: + image: mongo:7 + container_name: etsy-mongodb + environment: + MONGO_INITDB_DATABASE: etsy-tracker + volumes: + - mongodb_data:/data/db + - mongodb_config:/data/configdb + restart: unless-stopped + networks: + - etsy-network + healthcheck: + test: ["CMD", "mongosh", "--eval", "db.adminCommand('ping')"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 40s + +# External network for Traefik (must be created manually) +networks: + etsy-network: + driver: bridge + traefik_default: + external: true + +volumes: + mongodb_data: + driver: local + mongodb_config: + driver: local + etsy_data: + driver: local + etsy_uploads: + driver: local \ No newline at end of file