#!/bin/bash # ============================================== # 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 # ============================================== 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" echo -e "${GREEN}=== Docker Build Script ===${NC}" echo "" # 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 # .env Datei laden echo -e "${YELLOW}Loading environment variables from .env...${NC}" set -a # Automatisch alle Variablen exportieren source "$ENV_FILE" set +a # 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