|
@@ -19,13 +19,23 @@ else
|
|
|
exit 2
|
|
|
fi
|
|
|
|
|
|
-if [[ ! -x "$(command -v docker)" || ! -x "$(command -v docker-compose)" ]]; then
|
|
|
- if [[ -x "$(command -v docker)" && ! -x "$(command -v docker-compose)" ]]; then
|
|
|
- echo -e "${RED}Error: docker-compose not installed.${NC}"
|
|
|
- elif [[ ! -x "$(command -v docker)" && -x "$(command -v docker-compose)" ]]; then
|
|
|
- echo -e "${RED}Error: docker not installed.${NC}"
|
|
|
+if [[ -z ${DOCKER_COMMAND} ]]; then
|
|
|
+ DOCKER_COMMAND="docker"
|
|
|
+elif [[ ${DOCKER_COMMAND} != "docker" && ${DOCKER_COMMAND} != "podman" ]]; then
|
|
|
+ echo -e "${RED}Error: Invalid DOCKER_COMMAND${NC}"
|
|
|
+ exit 1
|
|
|
+fi
|
|
|
+
|
|
|
+docker="${DOCKER_COMMAND}"
|
|
|
+dockerCompose="${DOCKER_COMMAND}-compose"
|
|
|
+
|
|
|
+if [[ ! -x "$(command -v ${docker})" || ! -x "$(command -v ${dockerCompose})" ]]; then
|
|
|
+ if [[ -x "$(command -v ${docker})" && ! -x "$(command -v ${dockerCompose})" ]]; then
|
|
|
+ echo -e "${RED}Error: ${dockerCompose} not installed.${NC}"
|
|
|
+ elif [[ ! -x "$(command -v ${docker})" && -x "$(command -v ${dockerCompose})" ]]; then
|
|
|
+ echo -e "${RED}Error: ${docker} not installed.${NC}"
|
|
|
else
|
|
|
- echo -e "${RED}Error: docker and docker-compose not installed.${NC}"
|
|
|
+ echo -e "${RED}Error: ${docker} and ${dockerCompose} not installed.${NC}"
|
|
|
fi
|
|
|
exit 1
|
|
|
fi
|
|
@@ -57,7 +67,7 @@ handleServices()
|
|
|
fi
|
|
|
}
|
|
|
|
|
|
-dockerCommand()
|
|
|
+runDockerCommand()
|
|
|
{
|
|
|
validCommands=(start stop restart pull build ps logs)
|
|
|
if [[ ${validCommands[*]} =~ (^|[[:space:]])"$2"($|[[:space:]]) ]]; then
|
|
@@ -75,15 +85,15 @@ dockerCommand()
|
|
|
fi
|
|
|
if [[ ${2} == "stop" || ${2} == "restart" ]]; then
|
|
|
# shellcheck disable=SC2086
|
|
|
- docker-compose ${composeFiles} stop ${servicesString}
|
|
|
+ ${dockerCompose} ${composeFiles} stop ${servicesString}
|
|
|
fi
|
|
|
if [[ ${2} == "start" || ${2} == "restart" ]]; then
|
|
|
# shellcheck disable=SC2086
|
|
|
- docker-compose ${composeFiles} up -d ${servicesString}
|
|
|
+ ${dockerCompose} ${composeFiles} up -d ${servicesString}
|
|
|
fi
|
|
|
if [[ ${2} == "pull" || ${2} == "build" || ${2} == "ps" || ${2} == "logs" ]]; then
|
|
|
# shellcheck disable=SC2086
|
|
|
- docker-compose ${composeFiles} "${2}" ${servicesString}
|
|
|
+ ${dockerCompose} ${composeFiles} "${2}" ${servicesString}
|
|
|
fi
|
|
|
exitValue=$?
|
|
|
if [[ ${exitValue} -gt 0 ]]; then
|
|
@@ -94,7 +104,7 @@ dockerCommand()
|
|
|
exit 1
|
|
|
fi
|
|
|
else
|
|
|
- echo -e "${RED}Error: Invalid dockerCommand input${NC}"
|
|
|
+ echo -e "${RED}Error: Invalid runDockerCommand input${NC}"
|
|
|
exit 1
|
|
|
fi
|
|
|
}
|
|
@@ -103,33 +113,33 @@ case $1 in
|
|
|
start)
|
|
|
echo -e "${CYAN}Musare | Start Services${NC}"
|
|
|
# shellcheck disable=SC2068
|
|
|
- dockerCommand "$(basename "$0")" start ${@:2}
|
|
|
+ runDockerCommand "$(basename "$0")" start ${@:2}
|
|
|
;;
|
|
|
|
|
|
stop)
|
|
|
echo -e "${CYAN}Musare | Stop Services${NC}"
|
|
|
# shellcheck disable=SC2068
|
|
|
- dockerCommand "$(basename "$0")" stop ${@:2}
|
|
|
+ runDockerCommand "$(basename "$0")" stop ${@:2}
|
|
|
;;
|
|
|
|
|
|
restart)
|
|
|
echo -e "${CYAN}Musare | Restart Services${NC}"
|
|
|
# shellcheck disable=SC2068
|
|
|
- dockerCommand "$(basename "$0")" restart ${@:2}
|
|
|
+ runDockerCommand "$(basename "$0")" restart ${@:2}
|
|
|
;;
|
|
|
|
|
|
build)
|
|
|
echo -e "${CYAN}Musare | Build Services${NC}"
|
|
|
# shellcheck disable=SC2068
|
|
|
- dockerCommand "$(basename "$0")" pull ${@:2}
|
|
|
+ runDockerCommand "$(basename "$0")" pull ${@:2}
|
|
|
# shellcheck disable=SC2068
|
|
|
- dockerCommand "$(basename "$0")" build ${@:2}
|
|
|
+ runDockerCommand "$(basename "$0")" build ${@:2}
|
|
|
;;
|
|
|
|
|
|
status)
|
|
|
echo -e "${CYAN}Musare | Service Status${NC}"
|
|
|
# shellcheck disable=SC2068
|
|
|
- dockerCommand "$(basename "$0")" ps ${@:2}
|
|
|
+ runDockerCommand "$(basename "$0")" ps ${@:2}
|
|
|
;;
|
|
|
|
|
|
reset)
|
|
@@ -140,8 +150,8 @@ case $1 in
|
|
|
echo -e "${GREEN}Are you sure you want to reset all data? ${YELLOW}[y,n]: ${NC}"
|
|
|
read -r confirm
|
|
|
if [[ "${confirm}" == y* ]]; then
|
|
|
- dockerCommand "$(basename "$0")" stop
|
|
|
- docker-compose rm -v --force
|
|
|
+ runDockerCommand "$(basename "$0")" stop
|
|
|
+ ${dockerCompose} rm -v --force
|
|
|
if [[ -d $REDIS_DATA_LOCATION ]]; then
|
|
|
rm -rf "${REDIS_DATA_LOCATION}"
|
|
|
fi
|
|
@@ -163,9 +173,9 @@ case $1 in
|
|
|
read -r confirm
|
|
|
if [[ "${confirm}" == y* ]]; then
|
|
|
# shellcheck disable=SC2086
|
|
|
- dockerCommand "$(basename "$0")" stop ${servicesString:2}
|
|
|
+ runDockerCommand "$(basename "$0")" stop ${servicesString:2}
|
|
|
# shellcheck disable=SC2086
|
|
|
- docker-compose rm -v --force ${servicesString:2}
|
|
|
+ ${dockerCompose} rm -v --force ${servicesString:2}
|
|
|
if [[ "${servicesString:2}" == *redis* && -d $REDIS_DATA_LOCATION ]]; then
|
|
|
rm -rf "${REDIS_DATA_LOCATION}"
|
|
|
fi
|
|
@@ -184,34 +194,34 @@ case $1 in
|
|
|
attach)
|
|
|
echo -e "${CYAN}Musare | Attach${NC}"
|
|
|
if [[ $2 == "backend" ]]; then
|
|
|
- containerId=$(docker-compose ps -q backend)
|
|
|
+ containerId=$(${dockerCompose} ps -q backend)
|
|
|
if [[ -z $containerId ]]; then
|
|
|
echo -e "${RED}Error: Backend offline, please start to attach.${NC}"
|
|
|
exit 1
|
|
|
else
|
|
|
echo -e "${YELLOW}Detach with CTRL+P+Q${NC}"
|
|
|
- docker attach "$containerId"
|
|
|
+ ${docker} attach "$containerId"
|
|
|
fi
|
|
|
elif [[ $2 == "mongo" ]]; then
|
|
|
MONGO_VERSION_INT=${MONGO_VERSION:0:1}
|
|
|
- if [[ -z $(docker-compose ps -q mongo) ]]; then
|
|
|
+ if [[ -z $(${dockerCompose} ps -q mongo) ]]; then
|
|
|
echo -e "${RED}Error: Mongo offline, please start to attach.${NC}"
|
|
|
exit 1
|
|
|
else
|
|
|
echo -e "${YELLOW}Detach with CTRL+D${NC}"
|
|
|
if [[ $MONGO_VERSION_INT -ge 5 ]]; then
|
|
|
- docker-compose exec mongo mongosh musare -u "${MONGO_USER_USERNAME}" -p "${MONGO_USER_PASSWORD}" --eval "disableTelemetry()" --shell
|
|
|
+ ${dockerCompose} exec mongo mongosh musare -u "${MONGO_USER_USERNAME}" -p "${MONGO_USER_PASSWORD}" --eval "disableTelemetry()" --shell
|
|
|
else
|
|
|
- docker-compose exec mongo mongo musare -u "${MONGO_USER_USERNAME}" -p "${MONGO_USER_PASSWORD}"
|
|
|
+ ${dockerCompose} exec mongo mongo musare -u "${MONGO_USER_USERNAME}" -p "${MONGO_USER_PASSWORD}"
|
|
|
fi
|
|
|
fi
|
|
|
elif [[ $2 == "redis" ]]; then
|
|
|
- if [[ -z $(docker-compose ps -q redis) ]]; then
|
|
|
+ if [[ -z $(${dockerCompose} ps -q redis) ]]; then
|
|
|
echo -e "${RED}Error: Redis offline, please start to attach.${NC}"
|
|
|
exit 1
|
|
|
else
|
|
|
echo -e "${YELLOW}Detach with CTRL+C${NC}"
|
|
|
- docker-compose exec redis redis-cli -a "${REDIS_PASSWORD}"
|
|
|
+ ${dockerCompose} exec redis redis-cli -a "${REDIS_PASSWORD}"
|
|
|
fi
|
|
|
else
|
|
|
echo -e "${RED}Invalid service $2\n${YELLOW}Usage: $(basename "$0") attach [backend,mongo,redis]${NC}"
|
|
@@ -228,17 +238,17 @@ case $1 in
|
|
|
fi
|
|
|
case $2 in
|
|
|
frontend)
|
|
|
- docker-compose exec frontend npx eslint src --ext .js,.vue $fix
|
|
|
+ ${dockerCompose} exec frontend npx eslint src --ext .js,.vue $fix
|
|
|
exitValue=$?
|
|
|
;;
|
|
|
backend)
|
|
|
- docker-compose exec backend npx eslint logic $fix
|
|
|
+ ${dockerCompose} exec backend npx eslint logic $fix
|
|
|
exitValue=$?
|
|
|
;;
|
|
|
""|fix|--fix)
|
|
|
- docker-compose exec frontend npx eslint src --ext .js,.vue $fix
|
|
|
+ ${dockerCompose} exec frontend npx eslint src --ext .js,.vue $fix
|
|
|
frontendExitValue=$?
|
|
|
- docker-compose exec backend npx eslint logic $fix
|
|
|
+ ${dockerCompose} exec backend npx eslint logic $fix
|
|
|
backendExitValue=$?
|
|
|
if [[ ${frontendExitValue} -gt 0 || ${backendExitValue} -gt 0 ]]; then
|
|
|
exitValue=1
|
|
@@ -276,8 +286,8 @@ case $1 in
|
|
|
if [[ ${exitValue} -gt 0 ]]; then
|
|
|
exit ${exitValue}
|
|
|
fi
|
|
|
- dockerCommand "$(basename "$0")" build
|
|
|
- dockerCommand "$(basename "$0")" restart
|
|
|
+ runDockerCommand "$(basename "$0")" build
|
|
|
+ runDockerCommand "$(basename "$0")" restart
|
|
|
echo -e "${GREEN}Updated!${NC}"
|
|
|
if [[ -n $dbChange ]]; then
|
|
|
echo -e "${RED}Database schema has changed, please run migration!${NC}"
|
|
@@ -298,7 +308,7 @@ case $1 in
|
|
|
logs)
|
|
|
echo -e "${CYAN}Musare | Logs${NC}"
|
|
|
# shellcheck disable=SC2068
|
|
|
- dockerCommand "$(basename "$0")" logs ${@:2}
|
|
|
+ runDockerCommand "$(basename "$0")" logs ${@:2}
|
|
|
;;
|
|
|
|
|
|
backup)
|
|
@@ -318,7 +328,7 @@ case $1 in
|
|
|
backupLocation="${backupLocation}/${BACKUP_NAME}"
|
|
|
fi
|
|
|
echo -e "${YELLOW}Creating backup at ${backupLocation}${NC}"
|
|
|
- docker-compose exec -T mongo sh -c "mongodump --authenticationDatabase musare -u ${MONGO_USER_USERNAME} -p ${MONGO_USER_PASSWORD} -d musare --archive" > "${backupLocation}"
|
|
|
+ ${dockerCompose} exec -T mongo sh -c "mongodump --authenticationDatabase musare -u ${MONGO_USER_USERNAME} -p ${MONGO_USER_PASSWORD} -d musare --archive" > "${backupLocation}"
|
|
|
;;
|
|
|
|
|
|
restore)
|
|
@@ -339,7 +349,7 @@ case $1 in
|
|
|
echo -e "${RED}Error: no file at restore path given, cancelled restoration.${NC}"
|
|
|
exit 1
|
|
|
else
|
|
|
- docker-compose exec -T mongo sh -c "mongorestore --authenticationDatabase musare -u ${MONGO_USER_USERNAME} -p ${MONGO_USER_PASSWORD} --archive" < "${restoreFile}"
|
|
|
+ ${dockerCompose} exec -T mongo sh -c "mongorestore --authenticationDatabase musare -u ${MONGO_USER_USERNAME} -p ${MONGO_USER_PASSWORD} --archive" < "${restoreFile}"
|
|
|
fi
|
|
|
;;
|
|
|
|
|
@@ -358,9 +368,9 @@ case $1 in
|
|
|
exit 1
|
|
|
else
|
|
|
if [[ $MONGO_VERSION_INT -ge 5 ]]; then
|
|
|
- docker-compose exec mongo mongosh musare -u "${MONGO_USER_USERNAME}" -p "${MONGO_USER_PASSWORD}" --eval "disableTelemetry(); db.users.updateOne({username: '${adminUser}'}, {\$set: {role: 'admin'}})"
|
|
|
+ ${dockerCompose} exec mongo mongosh musare -u "${MONGO_USER_USERNAME}" -p "${MONGO_USER_PASSWORD}" --eval "disableTelemetry(); db.users.updateOne({username: '${adminUser}'}, {\$set: {role: 'admin'}})"
|
|
|
else
|
|
|
- docker-compose exec mongo mongo musare -u "${MONGO_USER_USERNAME}" -p "${MONGO_USER_PASSWORD}" --eval "db.users.updateOne({username: '${adminUser}'}, {\$set: {role: 'admin'}})"
|
|
|
+ ${dockerCompose} exec mongo mongo musare -u "${MONGO_USER_USERNAME}" -p "${MONGO_USER_PASSWORD}" --eval "db.users.updateOne({username: '${adminUser}'}, {\$set: {role: 'admin'}})"
|
|
|
fi
|
|
|
fi
|
|
|
elif [[ $2 == "remove" ]]; then
|
|
@@ -375,9 +385,9 @@ case $1 in
|
|
|
exit 1
|
|
|
else
|
|
|
if [[ $MONGO_VERSION_INT -ge 5 ]]; then
|
|
|
- docker-compose exec mongo mongosh musare -u "${MONGO_USER_USERNAME}" -p "${MONGO_USER_PASSWORD}" --eval "disableTelemetry(); db.users.updateOne({username: '${adminUser}'}, {\$set: {role: 'default'}})"
|
|
|
+ ${dockerCompose} exec mongo mongosh musare -u "${MONGO_USER_USERNAME}" -p "${MONGO_USER_PASSWORD}" --eval "disableTelemetry(); db.users.updateOne({username: '${adminUser}'}, {\$set: {role: 'default'}})"
|
|
|
else
|
|
|
- docker-compose exec mongo mongo musare -u "${MONGO_USER_USERNAME}" -p "${MONGO_USER_PASSWORD}" --eval "db.users.updateOne({username: '${adminUser}'}, {\$set: {role: 'default'}})"
|
|
|
+ ${dockerCompose} exec mongo mongo musare -u "${MONGO_USER_USERNAME}" -p "${MONGO_USER_PASSWORD}" --eval "db.users.updateOne({username: '${adminUser}'}, {\$set: {role: 'default'}})"
|
|
|
fi
|
|
|
fi
|
|
|
else
|