From c9ce0d14b9900bc65222485ab1f1686e07258122 Mon Sep 17 00:00:00 2001 From: Slawomir Koszewski Date: Wed, 21 Jan 2026 21:55:58 +0100 Subject: [PATCH] Separate Docker build into dedicated script - Create build-image.sh for dedicated Docker image building - Remove Docker build logic from build.sh to focus on Node.js app only - Add comprehensive instructions for running and pushing Docker images - Improve build script modularity and separation of concerns --- package.json | 2 +- scripts/build-image.sh | 63 ++++++++++++++++++++++++++++++++++++++++++ scripts/build.sh | 45 ++---------------------------- 3 files changed, 67 insertions(+), 43 deletions(-) create mode 100755 scripts/build-image.sh diff --git a/package.json b/package.json index 500a1df..c77260a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "jmespath-playground", - "version": "1.1.4", + "version": "1.1.5", "description": "A React-based web application for testing JMESPath expressions against JSON data", "main": "index.js", "scripts": { diff --git a/scripts/build-image.sh b/scripts/build-image.sh new file mode 100755 index 0000000..3def7a0 --- /dev/null +++ b/scripts/build-image.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +# JMESPath Testing Tool - Docker Image Build Script + +set -e + +echo "🐳 JMESPath Testing Tool - Docker Image Build" +echo "==============================================" +echo "" + +# Check if Docker is available +if ! command -v docker &> /dev/null; then + echo "❌ Docker not found. Please install Docker to build container images." + exit 1 +fi + +# Determine version information for Docker build +VERSION=$(git tag --points-at HEAD 2>/dev/null | sed 's/^v//' | head -n 1) + +if [ -n "$VERSION" ]; then + # We're at a tagged commit - release build + echo "📦 Building release version: $VERSION" + docker build \ + --build-arg VERSION="$VERSION" \ + --build-arg IS_RELEASE="true" \ + -t skoszewski/jmespath-playground:$VERSION \ + -t skoszewski/jmespath-playground:latest . + echo "✅ Built Docker images: skoszewski/jmespath-playground:$VERSION, skoszewski/jmespath-playground:latest" + + echo "" + echo "To run the release container:" + echo " docker run -p 3000:3000 skoszewski/jmespath-playground:$VERSION" + echo " docker run -p 3000:3000 skoszewski/jmespath-playground:latest" + + echo "" + echo "To push to Docker Hub:" + echo " docker push skoszewski/jmespath-playground:$VERSION" + echo " docker push skoszewski/jmespath-playground:latest" +else + # Development build + PACKAGE_VERSION=$(grep '"version"' package.json | cut -d'"' -f4) + DEV_VERSION="${PACKAGE_VERSION}-dev" + echo "📦 Building development version: $DEV_VERSION" + docker build \ + --build-arg VERSION="$DEV_VERSION" \ + --build-arg IS_RELEASE="false" \ + -t skoszewski/jmespath-playground:dev \ + -t skoszewski/jmespath-playground:latest . + echo "✅ Built Docker images: skoszewski/jmespath-playground:dev, skoszewski/jmespath-playground:latest" + + echo "" + echo "To run the development container:" + echo " docker run -p 3000:3000 skoszewski/jmespath-playground:dev" + echo " docker run -p 3000:3000 skoszewski/jmespath-playground:latest" + + echo "" + echo "To push to Docker Hub:" + echo " docker push skoszewski/jmespath-playground:dev" + echo " docker push skoszewski/jmespath-playground:latest" +fi + +echo "" +echo "🎉 Docker image build completed successfully!" \ No newline at end of file diff --git a/scripts/build.sh b/scripts/build.sh index e792196..617e0be 100755 --- a/scripts/build.sh +++ b/scripts/build.sh @@ -30,49 +30,10 @@ npm install echo "🔨 Building production bundle..." npm run build -# Optional container build with Docker -if command -v docker &> /dev/null; then - echo "🐳 Building Docker container (optional)..." - - # Determine version information for Docker build - VERSION=$(git tag --points-at HEAD 2>/dev/null | sed 's/^v//' | head -n 1) - - if [ -n "$VERSION" ]; then - # We're at a tagged commit - release build - echo "📦 Building release version: $VERSION" - docker build \ - --build-arg VERSION="$VERSION" \ - --build-arg IS_RELEASE="true" \ - -t skoszewski/jmespath-playground:$VERSION \ - -t skoszewski/jmespath-playground:latest . - echo "✅ Built Docker images: skoszewski/jmespath-playground:$VERSION, skoszewski/jmespath-playground:latest" - else - # Development build - PACKAGE_VERSION=$(grep '"version"' package.json | cut -d'"' -f4) - DEV_VERSION="${PACKAGE_VERSION}-dev" - echo "📦 Building development version: $DEV_VERSION" - docker build \ - --build-arg VERSION="$DEV_VERSION" \ - --build-arg IS_RELEASE="false" \ - -t skoszewski/jmespath-playground:dev \ - -t skoszewski/jmespath-playground:latest . - echo "✅ Built Docker images: skoszewski/jmespath-playground:dev, skoszewski/jmespath-playground:latest" - fi -else - echo "💡 Docker not found. Container build is optional." - echo " Install Docker if you want to build containers." -fi - echo "✅ Build completed successfully!" echo "" echo "To run the application:" echo " npm run server # Run integrated server locally" -if command -v docker &> /dev/null; then - VERSION=$(git tag --points-at HEAD 2>/dev/null | sed 's/^v//' | head -n 1) - if [ -n "$VERSION" ]; then - echo " docker run -p 3000:3000 skoszewski/jmespath-playground:$VERSION # Run release container" - else - echo " docker run -p 3000:3000 skoszewski/jmespath-playground:dev # Run dev container" - fi - echo " docker run -p 3000:3000 skoszewski/jmespath-playground:latest # Run latest container" -fi \ No newline at end of file +echo "" +echo "To build Docker image:" +echo " scripts/build-image.sh # Build Docker container image" \ No newline at end of file