44 lines
No EOL
1.4 KiB
Text
Executable file
44 lines
No EOL
1.4 KiB
Text
Executable file
#!/usr/bin/env nu
|
|
|
|
# Docker Cross-build Image Builder
|
|
# Nushell version of build-docker-cross.sh
|
|
# Builds Docker image for cross-platform compilation
|
|
|
|
def main [] {
|
|
# Configuration - following project's configuration-driven approach
|
|
let dockerfile = "Dockerfile.cross"
|
|
let image_tag = "localhost/website-cross:latest"
|
|
|
|
print $"(ansi blue)🐳 Building Docker cross-compilation image...(ansi reset)"
|
|
print $"(ansi blue)📄 Dockerfile: ($dockerfile)(ansi reset)"
|
|
print $"(ansi blue)🏷️ Tag: ($image_tag)(ansi reset)"
|
|
|
|
# Check if Dockerfile exists
|
|
if not ($dockerfile | path exists) {
|
|
print $"(ansi red)❌ Dockerfile not found: ($dockerfile)(ansi reset)"
|
|
exit 1
|
|
}
|
|
|
|
# Check if Docker is available
|
|
try {
|
|
docker --version | ignore
|
|
} catch {
|
|
print $"(ansi red)❌ Docker is not available or not running(ansi reset)"
|
|
exit 1
|
|
}
|
|
|
|
# Build the Docker image
|
|
try {
|
|
docker build -f $dockerfile -t $image_tag .
|
|
print $"(ansi green)✅ Docker image built successfully: ($image_tag)(ansi reset)"
|
|
|
|
# Show image info
|
|
let image_info = (docker images $image_tag --format "table {{.Repository}}:{{.Tag}}\t{{.Size}}\t{{.CreatedAt}}")
|
|
print $"(ansi blue)📊 Image info:(ansi reset)"
|
|
print $image_info
|
|
|
|
} catch {
|
|
print $"(ansi red)❌ Failed to build Docker image(ansi reset)"
|
|
exit 1
|
|
}
|
|
} |