#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) ENV_NAME="${1:-test}" IMAGE_REPO="${2:-}" CUSTOM_TAG="${3:-}" DOCKERFILE="${SCRIPT_DIR}/Dockerfile" if [[ "${IMAGE_REPO}" == *":"* ]]; then echo "IMAGE_NAME should not include a tag. Pass the tag as the third argument." >&2 exit 1 fi case "${ENV_NAME}" in prod) APP_PORT=5222 DEFAULT_IMAGE_REPO="fst-app-release" ;; test) APP_PORT=5228 DEFAULT_IMAGE_REPO="fst-app-test" ;; *) echo "ENV_NAME must be 'prod' or 'test' (got: ${ENV_NAME})." >&2 exit 1 ;; esac if [[ -z "${IMAGE_REPO}" ]]; then IMAGE_REPO="${DEFAULT_IMAGE_REPO}" fi if ! command -v docker >/dev/null 2>&1; then echo "docker not found. Please install Docker first." >&2 exit 1 fi BUILD_TIME=$(date +%Y%m%d%H%M) TAG_SUFFIX="${CUSTOM_TAG:-${BUILD_TIME}}" IMAGE_NAME="${IMAGE_REPO}:${TAG_SUFFIX}" echo "Building image '${IMAGE_NAME}' with APP_PORT=${APP_PORT}" docker build "${SCRIPT_DIR}" -f "${DOCKERFILE}" -t "${IMAGE_NAME}" --build-arg APP_PORT="${APP_PORT}" echo "Build complete." echo "Run example: docker run -d -p ${APP_PORT}:${APP_PORT} --name ${IMAGE_NAME} ${IMAGE_NAME}"