All checks were successful
Build and Push Docker Image / build-and-push (push) Successful in 1m10s
95 lines
2.4 KiB
Bash
Executable File
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
|