CI Test
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m10s
All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m10s
This commit is contained in:
101
docker/build.sh
101
docker/build.sh
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user