mirror of
				https://github.com/Ylianst/MeshCentral.git
				synced 2025-03-09 15:40:18 +00:00 
			
		
		
		
	Merge pull request #4216 from sschoen/Feature/docker
updated docker.build.sh script
This commit is contained in:
		
						commit
						0ad93f85ec
					
				
					 1 changed files with 75 additions and 18 deletions
				
			
		| 
						 | 
					@ -2,9 +2,9 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
MSG="";
 | 
					MSG="";
 | 
				
			||||||
PRUNE="false";
 | 
					PRUNE="false";
 | 
				
			||||||
 | 
					OVERRIDE_TAGS="false";
 | 
				
			||||||
LOG_FILE=""
 | 
					ENABLE_LOG="false";
 | 
				
			||||||
#LOG_FILE="$(dirname -- "$( readlink -f -- "$0"; )")/build.log";
 | 
					LOG_FILE="$(dirname -- "$( readlink -f -- "$0"; )")/build.log";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function appendOutput()
 | 
					function appendOutput()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
| 
						 | 
					@ -12,24 +12,36 @@ function appendOutput()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ARGS=$@;
 | 
					    ARGS=$@;
 | 
				
			||||||
    LINE="${ARGS}\n";
 | 
					    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}";
 | 
					    MSG="${MSG}${LINE}";
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function runDockerBuild()
 | 
					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);
 | 
						STARTTS=$(date +%s);
 | 
				
			||||||
    ARGS=$@;
 | 
					    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}";
 | 
					    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
 | 
					    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);
 | 
					    ENDTS=$(date +%s);
 | 
				
			||||||
    DIFSEC=$((${ENDTS}-${STARTTS}));
 | 
					    DIFSEC=$((${ENDTS}-${STARTTS}));
 | 
				
			||||||
    if [ ${DIFSEC} -ge 60 ]; then
 | 
					    if [ ${DIFSEC} -ge 60 ]; then
 | 
				
			||||||
| 
						 | 
					@ -44,7 +56,7 @@ function runDockerBuild()
 | 
				
			||||||
        else appendOutput "\tBuild time: ${TMPMIN} min ${TMPSEC} sec"; fi
 | 
					        else appendOutput "\tBuild time: ${TMPMIN} min ${TMPSEC} sec"; fi
 | 
				
			||||||
    else appendOutput "\tBuild time: ${DIFSEC} 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;
 | 
					    expr $IMG_SIZE + 0 > /dev/null;
 | 
				
			||||||
    appendOutput "\tImage size: ${IMG_SIZE} ($((${IMG_SIZE}/1024/1024))M)\n";
 | 
					    appendOutput "\tImage size: ${IMG_SIZE} ($((${IMG_SIZE}/1024/1024))M)\n";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -57,19 +69,64 @@ if [ "${parent_path}" != "$(pwd -P)" ]; then
 | 
				
			||||||
    cd "${parent_path}";
 | 
					    cd "${parent_path}";
 | 
				
			||||||
fi
 | 
					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;
 | 
					MAINARGS=$@;
 | 
				
			||||||
#runDockerBuild --build-arg DISABLE_TRANSLATE=yes;
 | 
					 | 
				
			||||||
#runDockerBuild --build-arg DISABLE_MINIFY=yes;
 | 
					 | 
				
			||||||
runDockerBuild;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#runDockerBuild --build-arg INCLUDE_MONGODBTOOLS=yes --build-arg DISABLE_MINIFY=yes --build-arg DISABLE_TRANSLATE=yes;
 | 
					#runDockerBuild --build-arg DISABLE_MINIFY=yes --build-arg DISABLE_TRANSLATE=yes ${MAINARGS};
 | 
				
			||||||
#runDockerBuild --build-arg INCLUDE_MONGODBTOOLS=yes --build-arg DISABLE_TRANSLATE=yes;
 | 
					#runDockerBuild --build-arg DISABLE_TRANSLATE=yes ${MAINARGS};
 | 
				
			||||||
#runDockerBuild --build-arg INCLUDE_MONGODBTOOLS=yes --build-arg DISABLE_MINIFY=yes;
 | 
					#runDockerBuild --build-arg DISABLE_MINIFY=yes ${MAINARGS};
 | 
				
			||||||
#runDockerBuild --build-arg INCLUDE_MONGODBTOOLS=yes;
 | 
					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 "";
 | 
				
			||||||
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;
 | 
					exit 0;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue