From 6338a3461220d0a0a1dd6ab288c29dc17937343a Mon Sep 17 00:00:00 2001 From: denshooter Date: Sat, 13 Sep 2025 20:59:01 +0200 Subject: [PATCH] Fix container conflicts and environment variables - Add comprehensive container cleanup before starting services - Pass environment variables to docker compose commands - Fix container name conflicts by removing all existing containers first - Add local test script to verify deployment process - Ensure clean environment for zero-downtime deployments --- .gitea/workflows/ci-cd.yml | 16 ++++++++++++++++ test-deployment.sh | 36 ++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100755 test-deployment.sh diff --git a/.gitea/workflows/ci-cd.yml b/.gitea/workflows/ci-cd.yml index 7a310c2..77047a2 100644 --- a/.gitea/workflows/ci-cd.yml +++ b/.gitea/workflows/ci-cd.yml @@ -67,12 +67,28 @@ jobs: CURRENT_CONTAINER_RUNNING=false fi + # Clean up ALL existing containers first + echo "๐Ÿงน Cleaning up ALL existing containers..." + docker compose down --remove-orphans || true + docker rm -f portfolio-app portfolio-postgres portfolio-redis || true + # Ensure database and redis are running echo "๐Ÿ”ง Ensuring database and redis are running..." docker compose up -d postgres redis # Wait for services to be ready sleep 10 + env: + NODE_ENV: ${{ vars.NODE_ENV }} + LOG_LEVEL: ${{ vars.LOG_LEVEL }} + NEXT_PUBLIC_BASE_URL: ${{ vars.NEXT_PUBLIC_BASE_URL }} + NEXT_PUBLIC_UMAMI_URL: ${{ vars.NEXT_PUBLIC_UMAMI_URL }} + NEXT_PUBLIC_UMAMI_WEBSITE_ID: ${{ vars.NEXT_PUBLIC_UMAMI_WEBSITE_ID }} + MY_EMAIL: ${{ vars.MY_EMAIL }} + MY_INFO_EMAIL: ${{ vars.MY_INFO_EMAIL }} + MY_PASSWORD: ${{ secrets.MY_PASSWORD }} + MY_INFO_PASSWORD: ${{ secrets.MY_INFO_PASSWORD }} + ADMIN_BASIC_AUTH: ${{ secrets.ADMIN_BASIC_AUTH }} - name: Verify secrets and variables before deployment run: | diff --git a/test-deployment.sh b/test-deployment.sh new file mode 100755 index 0000000..cd6785b --- /dev/null +++ b/test-deployment.sh @@ -0,0 +1,36 @@ +#!/bin/bash + +# Test script for deployment issues +echo "๐Ÿงช Testing deployment locally..." + +# Set test environment variables +export NODE_ENV=production +export LOG_LEVEL=info +export NEXT_PUBLIC_BASE_URL=https://dk0.dev +export NEXT_PUBLIC_UMAMI_URL=https://analytics.dk0.dev +export NEXT_PUBLIC_UMAMI_WEBSITE_ID=b3665829-927a-4ada-b9bb-fcf24171061e +export MY_EMAIL=contact@dk0.dev +export MY_INFO_EMAIL=info@dk0.dev +export MY_PASSWORD=test_password +export MY_INFO_PASSWORD=test_info_password +export ADMIN_BASIC_AUTH=admin:test_password + +echo "๐Ÿ”ง Environment variables set:" +echo "NODE_ENV: $NODE_ENV" +echo "NEXT_PUBLIC_BASE_URL: $NEXT_PUBLIC_BASE_URL" +echo "MY_EMAIL: $MY_EMAIL" + +echo "๐Ÿงน Cleaning up existing containers..." +docker compose down --remove-orphans || true +docker rm -f portfolio-app portfolio-postgres portfolio-redis || true + +echo "๐Ÿ”ง Starting database and redis..." +docker compose up -d postgres redis + +echo "โณ Waiting for services to be ready..." +sleep 10 + +echo "๐Ÿ“‹ Checking running containers:" +docker ps --format "table {{.Names}}\t{{.Status}}" + +echo "โœ… Test completed!" \ No newline at end of file