76 lines
1.8 KiB
Bash
Executable File
76 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$ROOT_DIR"
|
|
|
|
usage() {
|
|
cat <<EOF >&2
|
|
Usage: $(basename "$0") <tag> [service]
|
|
|
|
Arguments:
|
|
tag Image tag (required), e.g. 200-develop
|
|
service Service name (default: web)
|
|
|
|
Environment variables:
|
|
REGISTRY Image registry (default: ovh-docker.aectest.ir)
|
|
PROJECT Project namespace (default: tm)
|
|
DOCKERFILE Path to Dockerfile (default: \$ROOT_DIR/Dockerfile)
|
|
RUN_BUILD Set to 1 to execute docker build (default: 0)
|
|
PUSH Set to 1 to docker push after build (default: 0)
|
|
|
|
Examples:
|
|
$(basename "$0") 200-develop
|
|
RUN_BUILD=1 $(basename "$0") 200-develop
|
|
$(basename "$0") 200-develop web
|
|
REGISTRY=ovh-docker.aectest.ir PROJECT=tm PUSH=1 $(basename "$0") 1.0.0 web
|
|
EOF
|
|
exit 1
|
|
}
|
|
|
|
if [[ $# -lt 1 || "${1:-}" == "-h" || "${1:-}" == "--help" ]]; then
|
|
usage
|
|
fi
|
|
|
|
TAG="$1"
|
|
SERVICE="${2:-web}"
|
|
REGISTRY="${REGISTRY:-ovh-docker.aectest.ir}"
|
|
PROJECT="${PROJECT:-tm}"
|
|
DOCKERFILE="${DOCKERFILE:-$ROOT_DIR/Dockerfile}"
|
|
RUN_BUILD="${RUN_BUILD:-0}"
|
|
PUSH="${PUSH:-0}"
|
|
|
|
if [[ "$DOCKERFILE" != /* ]]; then
|
|
DOCKERFILE="$ROOT_DIR/$DOCKERFILE"
|
|
fi
|
|
|
|
if [[ ! -f "$DOCKERFILE" ]]; then
|
|
echo "Dockerfile not found at $DOCKERFILE" >&2
|
|
exit 1
|
|
fi
|
|
|
|
IMAGE="$REGISTRY/$PROJECT/$SERVICE:$TAG"
|
|
|
|
echo "Prepared image: $IMAGE"
|
|
echo " context: $ROOT_DIR"
|
|
echo " dockerfile: $DOCKERFILE"
|
|
echo " command: docker build -t $IMAGE -f $DOCKERFILE $ROOT_DIR"
|
|
echo
|
|
|
|
if [[ "$RUN_BUILD" != "1" ]]; then
|
|
echo "Manual mode: build command is shown only."
|
|
echo "Run with RUN_BUILD=1 to execute the build."
|
|
exit 0
|
|
fi
|
|
|
|
docker build -t "$IMAGE" -f "$DOCKERFILE" "$ROOT_DIR"
|
|
|
|
echo
|
|
echo "Build complete: $IMAGE"
|
|
|
|
if [[ "$PUSH" == "1" ]]; then
|
|
echo "Pushing $IMAGE"
|
|
docker push "$IMAGE"
|
|
echo "Push complete: $IMAGE"
|
|
fi
|