CI Test
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m10s

This commit is contained in:
Murat Özkorkmaz
2025-10-17 22:33:30 +02:00
parent a6ad5e0135
commit 4c4589de6d
9 changed files with 537 additions and 187 deletions

View File

@@ -1,21 +1,94 @@
#!/usr/bin/env bash
set -e
#!/bin/bash
# Bild- und Tag-Parameter
IMAGE="${1:-angular-web-app}"
TAG="${2:-latest}"
# ==============================================
# Docker Build Script mit .env Integration
# ==============================================
# Dieses Script liest IMAGE_NAME und IMAGE_TAG
# aus der .env Datei und führt den Docker Build aus
# ==============================================
# Pfad zum Skript selbst
set -e # Exit on error
# Farben für Output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Script-Verzeichnis ermitteln
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ENV_FILE="${SCRIPT_DIR}/.env"
# Root-Verzeichnis (eine Ebene über docker/)
ROOT_DIR="$(realpath "$SCRIPT_DIR/..")"
echo -e "${GREEN}=== Docker Build Script ===${NC}"
echo ""
# Dockerfile-Pfad
DOCKERFILE="$SCRIPT_DIR/Dockerfile"
# Prüfen ob .env Datei existiert
if [ ! -f "$ENV_FILE" ]; then
echo -e "${RED}ERROR: .env file not found at ${ENV_FILE}${NC}"
exit 1
fi
echo "🏗️ Baue Docker-Image..."
echo "🔹 Dockerfile: $DOCKERFILE"
echo "🔹 Build-Kontext: $ROOT_DIR"
# .env Datei laden
echo -e "${YELLOW}Loading environment variables from .env...${NC}"
set -a # Automatisch alle Variablen exportieren
source "$ENV_FILE"
set +a
docker build -f "$DOCKERFILE" -t "${IMAGE}:${TAG}" "$ROOT_DIR"
# Validierung der erforderlichen Variablen
if [ -z "$REGISTRY_URL" ]; then
echo -e "${RED}ERROR: REGISTRY_URL not set in .env${NC}"
exit 1
fi
if [ -z "$NAMESPACE" ]; then
echo -e "${RED}ERROR: NAMESPACE not set in .env${NC}"
exit 1
fi
if [ -z "$REPO_NAME" ]; then
echo -e "${RED}ERROR: REPO_NAME not set in .env${NC}"
exit 1
fi
# Image Name aus .env Variablen zusammensetzen
IMAGE_NAME="${REGISTRY_URL}/${NAMESPACE}/${REPO_NAME}"
# Image Tag (default: latest)
IMAGE_TAG="${IMAGE_TAG:-latest}"
# Vollständiger Image Name mit Tag
FULL_IMAGE_NAME="${IMAGE_NAME}:${IMAGE_TAG}"
echo -e "${GREEN}Image Name:${NC} ${FULL_IMAGE_NAME}"
echo ""
# Docker Build ausführen
echo -e "${YELLOW}Starting Docker build...${NC}"
echo ""
# Zum Script-Verzeichnis wechseln
cd "$SCRIPT_DIR"
# Build-Befehl mit Parent-Verzeichnis als Kontext
docker build \
-f Dockerfile \
-t "$FULL_IMAGE_NAME" \
--build-arg BUILDKIT_INLINE_CACHE=1 \
..
echo ""
echo -e "${GREEN}✓ Build successful!${NC}"
echo ""
echo -e "Image: ${GREEN}${FULL_IMAGE_NAME}${NC}"
echo ""
echo -e "${YELLOW}To run the container:${NC}"
echo -e " docker run -p 8080:8080 ${FULL_IMAGE_NAME}"
echo ""
# Optional: Image auch mit 'latest' Tag erstellen für lokale Entwicklung
if [ "$IMAGE_TAG" != "latest" ]; then
echo -e "${YELLOW}Tagging image as 'latest' for local development...${NC}"
docker tag "$FULL_IMAGE_NAME" "${IMAGE_NAME}:latest"
echo -e "${GREEN}✓ Tagged as ${IMAGE_NAME}:latest${NC}"
echo ""
fi