Compare commits
	
		
			2 Commits
		
	
	
		
			c8b328e707
			...
			475a0d0dd2
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 475a0d0dd2 | |||
| 818483f92e | 
| @ -9,6 +9,14 @@ | ||||
|       </inspection_tool> | ||||
|     </profile> | ||||
|   </component> | ||||
|   <component name="GitSharedSettings"> | ||||
|     <option name="FORCE_PUSH_PROHIBITED_PATTERNS"> | ||||
|       <list> | ||||
|         <option value="master" /> | ||||
|         <option value="main" /> | ||||
|       </list> | ||||
|     </option> | ||||
|   </component> | ||||
|   <component name="VcsDirectoryMappings"> | ||||
|     <mapping directory="$PROJECT_DIR$" vcs="Git" /> | ||||
|   </component> | ||||
|  | ||||
| @ -117,14 +117,14 @@ doDocker() { | ||||
|     if [ "$1" = "stop" ]; then | ||||
|         printf "%s[%s] -- [INFO] Stopping %s-mailcow container --%s\n" \ | ||||
|             "$cyan" "$(stamp)" "$2" "$norm" >>"$logFile" | ||||
|         ${dockerCmd} -f "$mcDockerCompose" stop --timeout "$dockerStopTimeout" "$2-mailcow" 2>>"$logFile" | ||||
|         "${dockerCmd}" -f "$mcDockerCompose" stop --timeout "$dockerStopTimeout" "$2-mailcow" 2>>"$logFile" | ||||
|         # set result vars | ||||
|         dockerResultState="$(docker inspect -f '{{ .State.Running }}' "$containerName")" | ||||
|         dockerResultExit="$(docker inspect -f '{{ .State.ExitCode }}' "$containerName")" | ||||
|     elif [ "$1" = "start" ]; then | ||||
|         printf "%s[%s] -- [INFO] Starting %s-mailcow container --%s\n" \ | ||||
|             "$cyan" "$(stamp)" "$2" "$norm" >>"$logFile" | ||||
|         ${dockerCmd} -f "$mcDockerCompose" start "$2-mailcow" 2>>"$logFile" | ||||
|         "${dockerCmd}" -f "$mcDockerCompose" start "$2-mailcow" 2>>"$logFile" | ||||
|         # set result vars | ||||
|         dockerResultState="$(docker inspect -f '{{ .State.Running }}' "$containerName")" | ||||
|     fi | ||||
| @ -700,9 +700,9 @@ fi | ||||
| ### dump SQL | ||||
| printf "%s[%s] -- [INFO] Dumping mailcow SQL database --%s\n" \ | ||||
|     "$cyan" "$(stamp)" "$norm" >>"$logFile" | ||||
| ${dockerCmd} exec -T mysql-mailcow mysqldump --default-character-set=utf8mb4 \ | ||||
| "${dockerCmd}" exec -T mysql-mailcow mysqldump --default-character-set=utf8mb4 \ | ||||
|     -u${DBUSER} -p${DBPASS} ${DBNAME} >"$sqlDumpDir/$sqlDumpFile" 2>>"$logFile" | ||||
| dumpResult=$(${dockerCmd} exec -T mysql-mailcow echo "$?") | ||||
| dumpResult=$("${dockerCmd}" exec -T mysql-mailcow echo "$?") | ||||
| if [ "$dumpResult" -eq 0 ]; then | ||||
|     printf "%s[%s] -- [INFO] SQL database dumped successfully --%s\n" \ | ||||
|         "$cyan" "$(stamp)" "$norm" >>"$logFile" | ||||
| @ -718,8 +718,8 @@ fi | ||||
| # dump redis | ||||
| printf "%s[%s] -- [INFO] Dumping mailcow redis database --%s\n" \ | ||||
|     "$cyan" "$(stamp)" "$norm" >>"$logFile" | ||||
| ${dockerCmd} exec -T redis-mailcow redis-cli save >>"$logFile" 2>&1 | ||||
| rdumpResult=$(${dockerCmd} exec -T redis-mailcow echo "$?") | ||||
| "${dockerCmd}" exec -T redis-mailcow redis-cli save >>"$logFile" 2>&1 | ||||
| rdumpResult=$("${dockerCmd}" exec -T redis-mailcow echo "$?") | ||||
| if [ "$rdumpResult" -eq 0 ]; then | ||||
|     printf "%s[%s] -- [INFO] mailcow redis dumped successfully --%s\n" \ | ||||
|         "$cyan" "$(stamp)" "$norm" >>"$logFile" | ||||
|  | ||||
| @ -195,6 +195,7 @@ mcDockerCompose='/opt/mailcow-dockerized/docker-compose.yml' | ||||
| sqlRunning=0 | ||||
| dockerStartTimeout=180 | ||||
| dockerStopTimeout=120 | ||||
| dockerCmd="docker compose" | ||||
| 
 | ||||
| ### check if user is root | ||||
| if [ "$(id -u)" -ne 0 ]; then | ||||
| @ -309,6 +310,14 @@ export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" | ||||
| if ! command -v docker >/dev/null; then | ||||
|     consoleError '3' 'docker does not seem to be installed!' | ||||
| fi | ||||
| # verify compose installed and set proper commands based on version | ||||
| if ! (docker compose version >/dev/null 2>&1); then | ||||
|     if ! (docker-compose --version >/dev/null 2>&1); then | ||||
|         printf "\n%sERROR: Docker Compose not installed or not functioning%s\n\n" "$err" "$norm" | ||||
|         exit 3 | ||||
|     fi | ||||
|     dockerCmd="docker-compose" | ||||
| fi | ||||
| # mailcow.conf? | ||||
| if [ ! -f "$mcConfig" ]; then | ||||
|     consoleError '1' "mailcow configuration file ($mcConfig) cannot be found." | ||||
| @ -384,7 +393,7 @@ if [ "$restoreSQL" -eq 1 ]; then | ||||
|     if [ -n "$sqlBackup" ]; then | ||||
|         # start mysql container if not already running | ||||
|         if ! docker container inspect -f '{{ .State.Running }}' ${COMPOSE_PROJECT_NAME}_mysql-mailcow_1 >/dev/null 2>&1; then | ||||
|             docker-compose up -d mysql-mailcow > /dev/null 2>&1 | ||||
|             "${dockerCmd}" up -d mysql-mailcow >/dev/null 2>&1 | ||||
|             if docker container inspect -f '{{ .State.Running }}' ${COMPOSE_PROJECT_NAME}_mysql-mailcow_1 >/dev/null 2>&1; then | ||||
|                 sqlRunning=1 | ||||
|             else | ||||
| @ -403,7 +412,7 @@ if [ "$restoreSQL" -eq 1 ]; then | ||||
| 
 | ||||
|     # restore sql | ||||
|     if [ "$sqlRunning" -eq 1 ]; then | ||||
|         if docker exec -i "$(docker-compose ps -q mysql-mailcow)" mysql -u${DBUSER} -p${DBPASS} ${DBNAME} < "${sqlBackup}" > /dev/null 2>&1; then | ||||
|         if docker exec -i "$("${dockerCmd}" ps -q mysql-mailcow)" mysql -u${DBUSER} -p${DBPASS} ${DBNAME} <"${sqlBackup}" >/dev/null 2>&1; then | ||||
|             writeLog 'done' | ||||
|         else | ||||
|             writeLog 'done' 'error' | ||||
| @ -415,7 +424,7 @@ fi | ||||
| 
 | ||||
| ### stop containers (necessary for all restore operations except SQL) | ||||
| writeLog 'task' "Stopping mailcow" | ||||
| if ! docker-compose down --timeout "${dockerStopTimeout}" > /dev/null 2>&1; then | ||||
| if ! "${dockerCmd}" down --timeout "${dockerStopTimeout}" >/dev/null 2>&1; then | ||||
|     writeLog 'done' 'error' | ||||
|     writeLog 'error' '20' "Unable to bring mailcow containers down -- cannot reliably restore. Aborting." | ||||
|     exitError 20 | ||||
| @ -436,7 +445,8 @@ if [ "$restoreMail" -eq 1 ]; then | ||||
|     fi | ||||
| 
 | ||||
|     # restore email messages | ||||
|     doRestore "${COMPOSE_PROJECT_NAME}_vmail-vol-1" "$dockerVolumeMail"; ec="$?" | ||||
|     doRestore "${COMPOSE_PROJECT_NAME}_vmail-vol-1" "$dockerVolumeMail" | ||||
|     ec="$?" | ||||
|     case "$ec" in | ||||
|     0) | ||||
|         if [ "$verbose" -eq 1 ]; then | ||||
| @ -464,7 +474,8 @@ if [ "$restoreMail" -eq 1 ]; then | ||||
|     esac | ||||
| 
 | ||||
|     # restore encryption key | ||||
|     doRestore "${COMPOSE_PROJECT_NAME}_crypt-vol-1" "$dockerVolumeCrypt"; ec="$?" | ||||
|     doRestore "${COMPOSE_PROJECT_NAME}_crypt-vol-1" "$dockerVolumeCrypt" | ||||
|     ec="$?" | ||||
|     case "$ec" in | ||||
|     0) | ||||
|         if [ "$verbose" -eq 1 ]; then | ||||
| @ -500,7 +511,8 @@ if [ "$restorePostfix" -eq 1 ]; then | ||||
|         writeLog 'task' "Restoring postfix files" | ||||
|     fi | ||||
| 
 | ||||
|     doRestore "${COMPOSE_PROJECT_NAME}_postfix-vol-1" "$dockerVolumePostfix"; ec="$?" | ||||
|     doRestore "${COMPOSE_PROJECT_NAME}_postfix-vol-1" "$dockerVolumePostfix" | ||||
|     ec="$?" | ||||
|     case "$ec" in | ||||
|     0) | ||||
|         if [ "$verbose" -eq 1 ]; then | ||||
| @ -536,7 +548,8 @@ if [ "$restoreRspamd" -eq 1 ]; then | ||||
|         writeLog 'task' "Restoring Rspamd files" | ||||
|     fi | ||||
| 
 | ||||
|     doRestore "${COMPOSE_PROJECT_NAME}_rspamd-vol-1" "$dockerVolumeRspamd"; ec="$?" | ||||
|     doRestore "${COMPOSE_PROJECT_NAME}_rspamd-vol-1" "$dockerVolumeRspamd" | ||||
|     ec="$?" | ||||
|     case "$ec" in | ||||
|     0) | ||||
|         if [ "$verbose" -eq 1 ]; then | ||||
| @ -572,7 +585,8 @@ if [ "$restoreRedis" -eq 1 ]; then | ||||
|         writeLog 'task' "Restoring redis database" | ||||
|     fi | ||||
| 
 | ||||
|     doRestore "${COMPOSE_PROJECT_NAME}_redis-vol-1" "$dockerVolumeRedis"; ec="$?" | ||||
|     doRestore "${COMPOSE_PROJECT_NAME}_redis-vol-1" "$dockerVolumeRedis" | ||||
|     ec="$?" | ||||
|     case "$ec" in | ||||
|     0) | ||||
|         if [ "$verbose" -eq 1 ]; then | ||||
| @ -602,7 +616,7 @@ fi | ||||
| 
 | ||||
| ### restart mailcow | ||||
| writeLog 'task' "Starting mailcow" | ||||
| if ! docker-compose up -d > /dev/null 2>&1; then | ||||
| if ! "${dockerCmd}" up -d >/dev/null 2>&1; then | ||||
|     writeLog 'done' 'warn' | ||||
|     writeLog 'warn' '21' "Unable to automatically start mailcow containers. Please attempt a manual start and note any errors." | ||||
|     warnCount=$((warnCount + 1)) | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user