56 lines
1.6 KiB
Bash
Executable File
56 lines
1.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
|
LOG_FILE=${SCRIPT_DIR}/build-local-docker-image.log
|
|
ERROR=""
|
|
IMAGE_NAME="vben-admin-local"
|
|
|
|
function stop_and_remove_container() {
|
|
# Stop and remove the existing container
|
|
docker stop ${IMAGE_NAME} >/dev/null 2>&1
|
|
docker rm ${IMAGE_NAME} >/dev/null 2>&1
|
|
}
|
|
|
|
function remove_image() {
|
|
# Remove the existing image
|
|
docker rmi vben-admin-pro >/dev/null 2>&1
|
|
}
|
|
|
|
function install_dependencies() {
|
|
# Install all dependencies
|
|
cd ${SCRIPT_DIR}
|
|
pnpm install || ERROR="install_dependencies failed"
|
|
}
|
|
|
|
function build_image() {
|
|
# build docker
|
|
docker build ../../ -f Dockerfile -t ${IMAGE_NAME} || ERROR="build_image failed"
|
|
}
|
|
|
|
function log_message() {
|
|
if [[ ${ERROR} != "" ]];
|
|
then
|
|
>&2 echo "build failed, Please check build-local-docker-image.log for more details"
|
|
>&2 echo "ERROR: ${ERROR}"
|
|
exit 1
|
|
else
|
|
echo "docker image with tag '${IMAGE_NAME}' built sussessfully. Use below sample command to run the container"
|
|
echo ""
|
|
echo "docker run -d -p 8010:8080 --name ${IMAGE_NAME} ${IMAGE_NAME}"
|
|
fi
|
|
}
|
|
|
|
echo "Info: Stopping and removing existing container and image" | tee ${LOG_FILE}
|
|
stop_and_remove_container
|
|
remove_image
|
|
|
|
echo "Info: Installing dependencies" | tee -a ${LOG_FILE}
|
|
install_dependencies 1>> ${LOG_FILE} 2>> ${LOG_FILE}
|
|
|
|
if [[ ${ERROR} == "" ]]; then
|
|
echo "Info: Building docker image" | tee -a ${LOG_FILE}
|
|
build_image 1>> ${LOG_FILE} 2>> ${LOG_FILE}
|
|
fi
|
|
|
|
log_message | tee -a ${LOG_FILE}
|