Files
mwitnessing/_deploy/build-and-push.sh
2025-04-10 03:02:30 +03:00

58 lines
1.9 KiB
Bash

#!/bin/bash
# Script to build and push Docker images to the private registry at docker.d-popov.com
# Usage: ./build-and-push.sh [version]
set -e
# Configuration
REGISTRY="docker.d-popov.com"
IMAGE_NAME="jwpw"
DOCKERFILE="_deploy/prod.Dockerfile"
VERSION="${1:-latest}" # Use first argument as version or default to 'latest'
# Display build information
echo "====================================================="
echo "Building ${REGISTRY}/${IMAGE_NAME}:${VERSION}"
echo "Using Dockerfile: ${DOCKERFILE}"
echo "====================================================="
# Check if Docker is available
if ! command -v docker &> /dev/null; then
echo "Error: Docker is not installed or not in the PATH"
exit 1
fi
# Check if user is logged in to the registry
if ! docker info | grep -q "Registry: ${REGISTRY}"; then
echo "You need to log in to the registry first:"
echo "docker login ${REGISTRY}"
exit 1
fi
# Build the Docker image
echo "Building Docker image..."
docker build -t "${REGISTRY}/${IMAGE_NAME}:${VERSION}" -f "${DOCKERFILE}" .
# Tag as latest if version is not 'latest'
if [ "${VERSION}" != "latest" ]; then
echo "Tagging also as latest..."
docker tag "${REGISTRY}/${IMAGE_NAME}:${VERSION}" "${REGISTRY}/${IMAGE_NAME}:latest"
fi
# Push the image to the registry
echo "Pushing Docker image ${REGISTRY}/${IMAGE_NAME}:${VERSION} to registry..."
docker push "${REGISTRY}/${IMAGE_NAME}:${VERSION}"
# Push latest tag if version is not 'latest'
if [ "${VERSION}" != "latest" ]; then
echo "Pushing Docker image ${REGISTRY}/${IMAGE_NAME}:latest to registry..."
docker push "${REGISTRY}/${IMAGE_NAME}:latest"
fi
echo "====================================================="
echo "Build and push completed successfully!"
echo "Image: ${REGISTRY}/${IMAGE_NAME}:${VERSION}"
if [ "${VERSION}" != "latest" ]; then
echo "Image: ${REGISTRY}/${IMAGE_NAME}:latest"
fi
echo "====================================================="