mirror of
https://github.com/Ylianst/MeshCentral.git
synced 2024-11-27 02:04:30 +03:00
Merge pull request #4216 from sschoen/Feature/docker
updated docker.build.sh script
This commit is contained in:
commit
0ad93f85ec
@ -2,9 +2,9 @@
|
||||
|
||||
MSG="";
|
||||
PRUNE="false";
|
||||
|
||||
LOG_FILE=""
|
||||
#LOG_FILE="$(dirname -- "$( readlink -f -- "$0"; )")/build.log";
|
||||
OVERRIDE_TAGS="false";
|
||||
ENABLE_LOG="false";
|
||||
LOG_FILE="$(dirname -- "$( readlink -f -- "$0"; )")/build.log";
|
||||
|
||||
function appendOutput()
|
||||
{
|
||||
@ -12,23 +12,35 @@ function appendOutput()
|
||||
|
||||
ARGS=$@;
|
||||
LINE="${ARGS}\n";
|
||||
if [ -z "${LOG_FILE}" ]; then echo -e "${LINE}" > /dev/tty; else echo -e "${LINE}" &>> "${LOG_FILE}"; fi
|
||||
if [ -z "${ENABLE_LOG}" ] || [ "${ENABLE_LOG}" != "true" ]; then echo -e "${LINE}" > /dev/tty; else echo -e "${LINE}" 2>&1 | tee -a ${LOG_FILE}; fi
|
||||
|
||||
MSG="${MSG}${LINE}";
|
||||
}
|
||||
|
||||
function runDockerBuild()
|
||||
{
|
||||
if [ "${PRUNE}" == "true" ]; then docker system prune -a -f; fi
|
||||
if [ "${PRUNE}" == "true" ]; then
|
||||
if [ -z "${ENABLE_LOG}" ] || [ "${ENABLE_LOG}" != "true" ]; then docker system prune -a -f;
|
||||
else docker system prune -a -f | tee -a ${LOG_FILE}; fi
|
||||
fi
|
||||
|
||||
STARTTS=$(date +%s);
|
||||
ARGS=$@;
|
||||
|
||||
BUILD_CMD="docker build -f docker/Dockerfile --force-rm --no-cache ${ARGS} -t meshcentral .";
|
||||
APP_VERSION=$(grep -o '"version":\s*"[^"]*"' ./package.json | cut -f4- -d\" | tr -d '"');
|
||||
BASE_TAGS="";
|
||||
if [ -z "${OVERRIDE_TAGS}" ] || [ "${OVERRIDE_TAGS}" != "true" ]; then
|
||||
BASE_TAGS="-t meshcentral:latest -t meshcentral:${APP_VERSION}";
|
||||
fi
|
||||
|
||||
BUILD_CMD="docker build -f docker/Dockerfile --force-rm --no-cache ${ARGS} ${BASE_TAGS} .";
|
||||
appendOutput "Current build: ${BUILD_CMD}";
|
||||
|
||||
if [ -z "${LOG_FILE}" ]; then ${BUILD_CMD}; else ${BUILD_CMD} &>> "${LOG_FILE}"; fi
|
||||
if [ -z "${ENABLE_LOG}" ] || [ "${ENABLE_LOG}" != "true" ]; then ${BUILD_CMD}; else ${BUILD_CMD} | tee -a ${LOG_FILE}; fi
|
||||
if [ $? -ne 0 ]; then exit $?; fi
|
||||
|
||||
IMAGEID=$(docker images --format "{{.ID}} {{.CreatedAt}}" | sort -rk 2 | awk 'NR==1{print $1}');
|
||||
appendOutput "\tImageId: ${IMAGEID}";
|
||||
|
||||
ENDTS=$(date +%s);
|
||||
DIFSEC=$((${ENDTS}-${STARTTS}));
|
||||
@ -44,7 +56,7 @@ function runDockerBuild()
|
||||
else appendOutput "\tBuild time: ${TMPMIN} min ${TMPSEC} sec"; fi
|
||||
else appendOutput "\tBuild time: ${DIFSEC} sec"; fi
|
||||
|
||||
IMG_SIZE=$(docker image inspect meshcentral | grep -e "\"Size\"" | tr -d '",' | sed -E "s/\s*Size:\s*//");
|
||||
IMG_SIZE=$(docker image inspect ${IMAGEID} | grep -o '"Size":\s*[^,]*' | cut -f2- -d ':' | tr -d ' ');
|
||||
expr $IMG_SIZE + 0 > /dev/null;
|
||||
appendOutput "\tImage size: ${IMG_SIZE} ($((${IMG_SIZE}/1024/1024))M)\n";
|
||||
|
||||
@ -57,19 +69,64 @@ if [ "${parent_path}" != "$(pwd -P)" ]; then
|
||||
cd "${parent_path}";
|
||||
fi
|
||||
|
||||
if ! [ -z $1 ] && [ "${1}" == "prune" ]; then PRUNE="true"; fi
|
||||
if ! [ -z $1 ]; then
|
||||
for arg in "$@"
|
||||
do
|
||||
case "${arg}" in
|
||||
--prune)
|
||||
PRUNE="true";
|
||||
shift 1;
|
||||
;;
|
||||
--log)
|
||||
ENABLE_LOG="true";
|
||||
shift 1;
|
||||
;;
|
||||
--no-tags)
|
||||
OVERRIDE_TAGS="true";
|
||||
shift 1;
|
||||
;;
|
||||
--help)
|
||||
__usage="\n
|
||||
Usage: ./$(basename ${0}) [OPTIONS] [BUILD ARGUMENTS]\n
|
||||
\n
|
||||
Options:\n
|
||||
\t--log \t\twrite output to build.log file\n
|
||||
\t--no-tags \tdo not use default tags (meshcentral:latest and meshcentral:%VERSION%)\n
|
||||
\t--prune \tWARNING: This will remove:\n
|
||||
\t\t\t - all stopped docker containers\n
|
||||
\t\t\t - all docker networks not used by at least one container\n
|
||||
\t\t\t - all docker images without at least one container associated to them\n
|
||||
\t\t\t - all docker build cache\n
|
||||
\n
|
||||
Build arguments: \tAll build arguments are forwarded to the docker build command, so you can use any option accepted by 'docker build'\n
|
||||
\t\t\t(https://docs.docker.com/engine/reference/commandline/build/#options)\n\n
|
||||
\t--build-arg INCLUDE_MONGODBTOOLS=yes \tIncludes mongodb-tools (mongodump, ...) in the image\n
|
||||
\t--build-arg DISABLE_MINIFY=yes \t\tDisables minification of files\n
|
||||
\t--build-arg DISABLE_TRANSLATE=yes \tDisables translation of files\n
|
||||
";
|
||||
echo -e $__usage;
|
||||
exit 0;
|
||||
;;
|
||||
*)
|
||||
break;
|
||||
;;
|
||||
esac
|
||||
done
|
||||
fi
|
||||
|
||||
#runDockerBuild --build-arg DISABLE_MINIFY=yes --build-arg DISABLE_TRANSLATE=yes;
|
||||
#runDockerBuild --build-arg DISABLE_TRANSLATE=yes;
|
||||
#runDockerBuild --build-arg DISABLE_MINIFY=yes;
|
||||
runDockerBuild;
|
||||
MAINARGS=$@;
|
||||
|
||||
#runDockerBuild --build-arg INCLUDE_MONGODBTOOLS=yes --build-arg DISABLE_MINIFY=yes --build-arg DISABLE_TRANSLATE=yes;
|
||||
#runDockerBuild --build-arg INCLUDE_MONGODBTOOLS=yes --build-arg DISABLE_TRANSLATE=yes;
|
||||
#runDockerBuild --build-arg INCLUDE_MONGODBTOOLS=yes --build-arg DISABLE_MINIFY=yes;
|
||||
#runDockerBuild --build-arg INCLUDE_MONGODBTOOLS=yes;
|
||||
#runDockerBuild --build-arg DISABLE_MINIFY=yes --build-arg DISABLE_TRANSLATE=yes ${MAINARGS};
|
||||
#runDockerBuild --build-arg DISABLE_TRANSLATE=yes ${MAINARGS};
|
||||
#runDockerBuild --build-arg DISABLE_MINIFY=yes ${MAINARGS};
|
||||
runDockerBuild ${MAINARGS};
|
||||
|
||||
#runDockerBuild --build-arg INCLUDE_MONGODBTOOLS=yes --build-arg DISABLE_MINIFY=yes --build-arg DISABLE_TRANSLATE=yes ${MAINARGS};
|
||||
#runDockerBuild --build-arg INCLUDE_MONGODBTOOLS=yes --build-arg DISABLE_TRANSLATE=yes ${MAINARGS};
|
||||
#runDockerBuild --build-arg INCLUDE_MONGODBTOOLS=yes --build-arg DISABLE_MINIFY=yes ${MAINARGS};
|
||||
#runDockerBuild --build-arg INCLUDE_MONGODBTOOLS=yes ${MAINARGS};
|
||||
|
||||
echo "";
|
||||
echo -e "${MSG}";
|
||||
if [ -z "${ENABLE_LOG}" ] || [ "${ENABLE_LOG}" != "true" ]; then echo -e "${MSG}"; else echo -e "${MSG}" 2>&1 | tee -a ${LOG_FILE}; fi
|
||||
|
||||
exit 0;
|
||||
|
Loading…
Reference in New Issue
Block a user