Files
enerport-web-app/docker/build.sh
Murat Özkorkmaz 4c4589de6d
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m10s
CI Test
2025-10-17 22:33:30 +02:00

95 lines
2.4 KiB
Bash
Executable File

#!/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