mirror of
https://github.com/tiredofit/docker-db-backup.git
synced 2025-12-22 05:33:53 +01:00
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
425383639a | ||
|
|
1e46996812 | ||
|
|
e71334564f | ||
|
|
f83f97bf76 | ||
|
|
94a8e45af6 | ||
|
|
9d90e37339 | ||
|
|
085b7cd6ce | ||
|
|
12484bb3f3 | ||
|
|
8fc2721dd4 | ||
|
|
68174c061f |
4
.github/workflows/main.yml
vendored
4
.github/workflows/main.yml
vendored
@@ -8,8 +8,8 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
uses: tiredofit/github_actions/.github/workflows/default_amd64_armv7_arm64.yml@main
|
#uses: tiredofit/github_actions/.github/workflows/default_amd64_armv7_arm64.yml@main
|
||||||
#uses: tiredofit/github_actions/.github/workflows/default_amd64.yml@main
|
#uses: tiredofit/github_actions/.github/workflows/default_amd64.yml@main
|
||||||
#uses: tiredofit/github_actions/.github/workflows/default_amd64_armv7_arm64.yml@main
|
#uses: tiredofit/github_actions/.github/workflows/default_amd64_armv7_arm64.yml@main
|
||||||
#uses: tiredofit/github_actions/.github/workflows/default_amd64_arm64.yml@main
|
uses: tiredofit/github_actions/.github/workflows/default_amd64_arm64.yml@main
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|||||||
4
.github/workflows/manual.yml
vendored
4
.github/workflows/manual.yml
vendored
@@ -9,8 +9,8 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
uses: tiredofit/github_actions/.github/workflows/default_amd64_armv7_arm64.yml@main
|
#uses: tiredofit/github_actions/.github/workflows/default_amd64_armv7_arm64.yml@main
|
||||||
#uses: tiredofit/github_actions/.github/workflows/default_amd64.yml@main
|
#uses: tiredofit/github_actions/.github/workflows/default_amd64.yml@main
|
||||||
#uses: tiredofit/github_actions/.github/workflows/default_amd64_armv7_arm64.yml@main
|
#uses: tiredofit/github_actions/.github/workflows/default_amd64_armv7_arm64.yml@main
|
||||||
#uses: tiredofit/github_actions/.github/workflows/default_amd64_arm64.yml@main
|
uses: tiredofit/github_actions/.github/workflows/default_amd64_arm64.yml@main
|
||||||
secrets: inherit
|
secrets: inherit
|
||||||
|
|||||||
25
CHANGELOG.md
25
CHANGELOG.md
@@ -1,3 +1,28 @@
|
|||||||
|
## 3.9.5 2023-06-13 <dave at tiredofit dot ca>
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Start building Influx DB v1 manually due to being removed from Alpine repositories
|
||||||
|
|
||||||
|
|
||||||
|
## 3.9.4 2023-06-13 <dave at tiredofit dot ca>
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Add abliity to use --rsyncable argument to zstd archives
|
||||||
|
|
||||||
|
|
||||||
|
## 3.9.3 2023-06-05 <dave at tiredofit dot ca>
|
||||||
|
|
||||||
|
### Added
|
||||||
|
- Add notification if blobxfer/s3 upload fails (credit @alwynpan)
|
||||||
|
- Add zip package
|
||||||
|
|
||||||
|
|
||||||
|
## 3.9.2 2023-05-10 <dave at tiredofit dot ca>
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
- Alpine 3.18 base
|
||||||
|
|
||||||
|
|
||||||
## 3.9.1 2023-05-03 <dave at tiredofit dot ca>
|
## 3.9.1 2023-05-03 <dave at tiredofit dot ca>
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|||||||
16
Dockerfile
16
Dockerfile
@@ -1,8 +1,12 @@
|
|||||||
FROM docker.io/tiredofit/alpine:3.17
|
ARG DISTRO=alpine
|
||||||
|
ARG DISTRO_VARIANT=3.18
|
||||||
|
|
||||||
|
FROM docker.io/tiredofit/${DISTRO}:${DISTRO_VARIANT}
|
||||||
LABEL maintainer="Dave Conroy (github.com/tiredofit)"
|
LABEL maintainer="Dave Conroy (github.com/tiredofit)"
|
||||||
|
|
||||||
### Set Environment Variables
|
### Set Environment Variables
|
||||||
ENV INFLUX2_VERSION=2.4.0 \
|
ENV INFLUX_VERSION=1.8.0 \
|
||||||
|
INFLUX2_VERSION=2.4.0 \
|
||||||
MSSQL_VERSION=18.0.1.1-1 \
|
MSSQL_VERSION=18.0.1.1-1 \
|
||||||
CONTAINER_ENABLE_MESSAGING=FALSE \
|
CONTAINER_ENABLE_MESSAGING=FALSE \
|
||||||
CONTAINER_ENABLE_MONITORING=TRUE \
|
CONTAINER_ENABLE_MONITORING=TRUE \
|
||||||
@@ -19,6 +23,7 @@ RUN source /assets/functions/00-container && \
|
|||||||
build-base \
|
build-base \
|
||||||
bzip2-dev \
|
bzip2-dev \
|
||||||
git \
|
git \
|
||||||
|
go \
|
||||||
libarchive-dev \
|
libarchive-dev \
|
||||||
openssl-dev \
|
openssl-dev \
|
||||||
libffi-dev \
|
libffi-dev \
|
||||||
@@ -30,7 +35,6 @@ RUN source /assets/functions/00-container && \
|
|||||||
package install .db-backup-run-deps \
|
package install .db-backup-run-deps \
|
||||||
aws-cli \
|
aws-cli \
|
||||||
bzip2 \
|
bzip2 \
|
||||||
influxdb \
|
|
||||||
libarchive \
|
libarchive \
|
||||||
mariadb-client \
|
mariadb-client \
|
||||||
mariadb-connector-c \
|
mariadb-connector-c \
|
||||||
@@ -44,6 +48,7 @@ RUN source /assets/functions/00-container && \
|
|||||||
redis \
|
redis \
|
||||||
sqlite \
|
sqlite \
|
||||||
xz \
|
xz \
|
||||||
|
zip \
|
||||||
zstd \
|
zstd \
|
||||||
&& \
|
&& \
|
||||||
\
|
\
|
||||||
@@ -56,7 +61,9 @@ RUN source /assets/functions/00-container && \
|
|||||||
\
|
\
|
||||||
if [ $mssql = "true" ] ; then curl -O https://download.microsoft.com/download/b/9/f/b9f3cce4-3925-46d4-9f46-da08869c6486/msodbcsql18_${MSSQL_VERSION}_amd64.apk ; curl -O https://download.microsoft.com/download/b/9/f/b9f3cce4-3925-46d4-9f46-da08869c6486/mssql-tools18_${MSSQL_VERSION}_amd64.apk ; echo y | apk add --allow-untrusted msodbcsql18_${MSSQL_VERSION}_amd64.apk mssql-tools18_${MSSQL_VERSION}_amd64.apk ; else echo >&2 "Detected non x86_64 build variant, skipping MSSQL installation" ; fi; \
|
if [ $mssql = "true" ] ; then curl -O https://download.microsoft.com/download/b/9/f/b9f3cce4-3925-46d4-9f46-da08869c6486/msodbcsql18_${MSSQL_VERSION}_amd64.apk ; curl -O https://download.microsoft.com/download/b/9/f/b9f3cce4-3925-46d4-9f46-da08869c6486/mssql-tools18_${MSSQL_VERSION}_amd64.apk ; echo y | apk add --allow-untrusted msodbcsql18_${MSSQL_VERSION}_amd64.apk mssql-tools18_${MSSQL_VERSION}_amd64.apk ; else echo >&2 "Detected non x86_64 build variant, skipping MSSQL installation" ; fi; \
|
||||||
if [ $influx2 = "true" ] ; then curl -sSL https://dl.influxdata.com/influxdb/releases/influxdb2-client-${INFLUX2_VERSION}-linux-${influx_arch}.tar.gz | tar xvfz - --strip=1 -C /usr/src/ ; chmod +x /usr/src/influx ; mv /usr/src/influx /usr/sbin/ ; else echo >&2 "Unable to build Influx 2 on this system" ; fi ; \
|
if [ $influx2 = "true" ] ; then curl -sSL https://dl.influxdata.com/influxdb/releases/influxdb2-client-${INFLUX2_VERSION}-linux-${influx_arch}.tar.gz | tar xvfz - --strip=1 -C /usr/src/ ; chmod +x /usr/src/influx ; mv /usr/src/influx /usr/sbin/ ; else echo >&2 "Unable to build Influx 2 on this system" ; fi ; \
|
||||||
\
|
clone_git_repo https://github.com/influxdata/influxdb "${INFLUX_VERSION}" && \
|
||||||
|
go build -o /usr/sbin/influxd ./cmd/influxd && \
|
||||||
|
strip /usr/sbin/influxd && \
|
||||||
mkdir -p /usr/src/pbzip2 && \
|
mkdir -p /usr/src/pbzip2 && \
|
||||||
curl -sSL https://launchpad.net/pbzip2/1.1/1.1.13/+download/pbzip2-1.1.13.tar.gz | tar xvfz - --strip=1 -C /usr/src/pbzip2 && \
|
curl -sSL https://launchpad.net/pbzip2/1.1/1.1.13/+download/pbzip2-1.1.13.tar.gz | tar xvfz - --strip=1 -C /usr/src/pbzip2 && \
|
||||||
cd /usr/src/pbzip2 && \
|
cd /usr/src/pbzip2 && \
|
||||||
@@ -81,6 +88,7 @@ RUN source /assets/functions/00-container && \
|
|||||||
/*.apk \
|
/*.apk \
|
||||||
/etc/logrotate.d/* \
|
/etc/logrotate.d/* \
|
||||||
/root/.cache \
|
/root/.cache \
|
||||||
|
/root/go \
|
||||||
/tmp/* \
|
/tmp/* \
|
||||||
/usr/src/*
|
/usr/src/*
|
||||||
|
|
||||||
|
|||||||
@@ -135,7 +135,7 @@ Be sure to view the following repositories to understand all the customizable op
|
|||||||
|
|
||||||
| Parameter | Description | Default |
|
| Parameter | Description | Default |
|
||||||
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------- | --------------- |
|
| ----------------------- | -------------------------------------------------------------------------------------------------------------------------------- | --------------- |
|
||||||
| `BACKUP_LOCATION` | Backup to `FILESYSTEM` or `S3` compatible services like S3, Minio, Wasabi | `FILESYSTEM` |
|
| `BACKUP_LOCATION` | Backup to `FILESYSTEM`, `blobxfer` or `S3` compatible services like S3, Minio, Wasabi | `FILESYSTEM` |
|
||||||
| `MODE` | `AUTO` mode to use internal scheduling routines or `MANUAL` to simply use this as manual backups only executed by your own means | `AUTO` |
|
| `MODE` | `AUTO` mode to use internal scheduling routines or `MANUAL` to simply use this as manual backups only executed by your own means | `AUTO` |
|
||||||
| `MANUAL_RUN_FOREVER` | `TRUE` or `FALSE` if you wish to try to make the container exit after the backup | `TRUE` |
|
| `MANUAL_RUN_FOREVER` | `TRUE` or `FALSE` if you wish to try to make the container exit after the backup | `TRUE` |
|
||||||
| `TEMP_LOCATION` | Perform Backups and Compression in this temporary directory | `/tmp/backups/` |
|
| `TEMP_LOCATION` | Perform Backups and Compression in this temporary directory | `/tmp/backups/` |
|
||||||
|
|||||||
@@ -31,6 +31,8 @@ services:
|
|||||||
- ./backups:/backup
|
- ./backups:/backup
|
||||||
#- ./post-script.sh:/assets/custom-scripts/post-script.sh
|
#- ./post-script.sh:/assets/custom-scripts/post-script.sh
|
||||||
environment:
|
environment:
|
||||||
|
- TIMEZONE=America/Vancouver
|
||||||
|
- CONTAINER_ENABLE_MONITORING=FALSE
|
||||||
# - DEBUG_MODE=TRUE
|
# - DEBUG_MODE=TRUE
|
||||||
- DB_TYPE=mariadb
|
- DB_TYPE=mariadb
|
||||||
- DB_HOST=example-db-host
|
- DB_HOST=example-db-host
|
||||||
@@ -43,7 +45,7 @@ services:
|
|||||||
- CHECKSUM=SHA1
|
- CHECKSUM=SHA1
|
||||||
- COMPRESSION=GZ
|
- COMPRESSION=GZ
|
||||||
- SPLIT_DB=FALSE
|
- SPLIT_DB=FALSE
|
||||||
- CONTAINER_ENABLE_MONITORING=FALSE
|
|
||||||
restart: always
|
restart: always
|
||||||
networks:
|
networks:
|
||||||
- example-db-network
|
- example-db-network
|
||||||
|
|||||||
@@ -137,6 +137,7 @@ backup_couch() {
|
|||||||
check_exit_code $target
|
check_exit_code $target
|
||||||
generate_checksum
|
generate_checksum
|
||||||
move_dbbackup
|
move_dbbackup
|
||||||
|
check_exit_code "move backup file"
|
||||||
post_dbbackup ${DB_NAME}
|
post_dbbackup ${DB_NAME}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -167,6 +168,7 @@ backup_influx() {
|
|||||||
ltarget=influx_${db}_${DB_HOST#*//}
|
ltarget=influx_${db}_${DB_HOST#*//}
|
||||||
generate_checksum
|
generate_checksum
|
||||||
move_dbbackup
|
move_dbbackup
|
||||||
|
check_exit_code "move backup file"
|
||||||
post_dbbackup $db
|
post_dbbackup $db
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
@@ -187,6 +189,7 @@ backup_influx() {
|
|||||||
ltarget=influx2_${db}_${DB_HOST#*//}
|
ltarget=influx2_${db}_${DB_HOST#*//}
|
||||||
generate_checksum
|
generate_checksum
|
||||||
move_dbbackup
|
move_dbbackup
|
||||||
|
check_exit_code "move backup file"
|
||||||
post_dbbackup $db
|
post_dbbackup $db
|
||||||
done
|
done
|
||||||
;;
|
;;
|
||||||
@@ -216,6 +219,7 @@ backup_mongo() {
|
|||||||
check_exit_code $target
|
check_exit_code $target
|
||||||
generate_checksum
|
generate_checksum
|
||||||
move_dbbackup
|
move_dbbackup
|
||||||
|
check_exit_code "move backup file"
|
||||||
post_dbbackup "${DB_NAME}"
|
post_dbbackup "${DB_NAME}"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -231,6 +235,7 @@ backup_mssql() {
|
|||||||
check_exit_code $target
|
check_exit_code $target
|
||||||
generate_checksum
|
generate_checksum
|
||||||
move_dbbackup
|
move_dbbackup
|
||||||
|
check_exit_code "move backup file"
|
||||||
post_dbbackup $DB_NAME
|
post_dbbackup $DB_NAME
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -271,6 +276,7 @@ backup_mysql() {
|
|||||||
check_exit_code $target
|
check_exit_code $target
|
||||||
generate_checksum
|
generate_checksum
|
||||||
move_dbbackup
|
move_dbbackup
|
||||||
|
check_exit_code "move backup file"
|
||||||
post_dbbackup $db
|
post_dbbackup $db
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
@@ -286,6 +292,7 @@ backup_mysql() {
|
|||||||
check_exit_code $target
|
check_exit_code $target
|
||||||
generate_checksum
|
generate_checksum
|
||||||
move_dbbackup
|
move_dbbackup
|
||||||
|
check_exit_code "move backup file"
|
||||||
post_dbbackup all
|
post_dbbackup all
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -322,6 +329,7 @@ backup_pgsql() {
|
|||||||
check_exit_code $target
|
check_exit_code $target
|
||||||
generate_checksum
|
generate_checksum
|
||||||
move_dbbackup
|
move_dbbackup
|
||||||
|
check_exit_code "move backup file"
|
||||||
post_dbbackup $db
|
post_dbbackup $db
|
||||||
done
|
done
|
||||||
else
|
else
|
||||||
@@ -345,6 +353,7 @@ backup_pgsql() {
|
|||||||
check_exit_code $target
|
check_exit_code $target
|
||||||
generate_checksum
|
generate_checksum
|
||||||
move_dbbackup
|
move_dbbackup
|
||||||
|
check_exit_code "move backup file"
|
||||||
post_dbbackup all
|
post_dbbackup all
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -376,6 +385,7 @@ backup_redis() {
|
|||||||
check_exit_code $target
|
check_exit_code $target
|
||||||
generate_checksum
|
generate_checksum
|
||||||
move_dbbackup
|
move_dbbackup
|
||||||
|
check_exit_code "move backup file"
|
||||||
post_dbbackup all
|
post_dbbackup all
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -394,6 +404,7 @@ backup_sqlite3() {
|
|||||||
cat "${TEMP_LOCATION}"/backup.sqlite3 | ${dir_compress_cmd} > "${TEMP_LOCATION}/${target}"
|
cat "${TEMP_LOCATION}"/backup.sqlite3 | ${dir_compress_cmd} > "${TEMP_LOCATION}/${target}"
|
||||||
generate_checksum
|
generate_checksum
|
||||||
move_dbbackup
|
move_dbbackup
|
||||||
|
check_exit_code "move backup file"
|
||||||
post_dbbackup $db
|
post_dbbackup $db
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -558,11 +569,12 @@ compression() {
|
|||||||
PARALLEL_COMPRESSION_THREADS=1
|
PARALLEL_COMPRESSION_THREADS=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case "${COMPRESSION,,}" in
|
|
||||||
gz* )
|
|
||||||
if var_true "${GZ_RSYNCABLE}" ; then
|
if var_true "${GZ_RSYNCABLE}" ; then
|
||||||
gz_rsyncable=--rsyncable
|
gz_rsyncable=--rsyncable
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
case "${COMPRESSION,,}" in
|
||||||
|
gz* )
|
||||||
compress_cmd="pigz -q -${COMPRESSION_LEVEL} -p ${PARALLEL_COMPRESSION_THREADS} ${gz_rsyncable}"
|
compress_cmd="pigz -q -${COMPRESSION_LEVEL} -p ${PARALLEL_COMPRESSION_THREADS} ${gz_rsyncable}"
|
||||||
compression_type="gzip"
|
compression_type="gzip"
|
||||||
extension=".gz"
|
extension=".gz"
|
||||||
@@ -587,7 +599,7 @@ compression() {
|
|||||||
target=${target}.xz
|
target=${target}.xz
|
||||||
;;
|
;;
|
||||||
zst* )
|
zst* )
|
||||||
compress_cmd="zstd -q -q --rm -${COMPRESSION_LEVEL} -T${PARALLEL_COMPRESSION_THREADS} "
|
compress_cmd="zstd -q -q --rm -${COMPRESSION_LEVEL} -T${PARALLEL_COMPRESSION_THREADS} ${gz_rsyncable}"
|
||||||
compression_type="zstd"
|
compression_type="zstd"
|
||||||
dir_compress_cmd=${compress_cmd}
|
dir_compress_cmd=${compress_cmd}
|
||||||
extension=".zst"
|
extension=".zst"
|
||||||
@@ -711,6 +723,7 @@ move_dbbackup() {
|
|||||||
[[ ( -n "${S3_HOST}" ) ]] && PARAM_AWS_ENDPOINT_URL=" --endpoint-url ${S3_PROTOCOL}://${S3_HOST}"
|
[[ ( -n "${S3_HOST}" ) ]] && PARAM_AWS_ENDPOINT_URL=" --endpoint-url ${S3_PROTOCOL}://${S3_HOST}"
|
||||||
|
|
||||||
silent aws ${PARAM_AWS_ENDPOINT_URL} s3 cp ${TEMP_LOCATION}/${target} s3://${S3_BUCKET}/${S3_PATH}/${target} ${s3_ssl} ${s3_ca_cert} ${S3_EXTRA_OPTS}
|
silent aws ${PARAM_AWS_ENDPOINT_URL} s3 cp ${TEMP_LOCATION}/${target} s3://${S3_BUCKET}/${S3_PATH}/${target} ${s3_ssl} ${s3_ca_cert} ${S3_EXTRA_OPTS}
|
||||||
|
exit_code=$?
|
||||||
if var_true "${ENABLE_CHECKSUM}" ; then
|
if var_true "${ENABLE_CHECKSUM}" ; then
|
||||||
silent aws ${PARAM_AWS_ENDPOINT_URL} s3 cp ${TEMP_LOCATION}/*.${checksum_extension} s3://${S3_BUCKET}/${S3_PATH}/ ${s3_ssl} ${s3_ca_cert} ${S3_EXTRA_OPTS}
|
silent aws ${PARAM_AWS_ENDPOINT_URL} s3 cp ${TEMP_LOCATION}/*.${checksum_extension} s3://${S3_BUCKET}/${S3_PATH}/ ${s3_ssl} ${s3_ca_cert} ${S3_EXTRA_OPTS}
|
||||||
fi
|
fi
|
||||||
@@ -726,6 +739,7 @@ move_dbbackup() {
|
|||||||
mv "${TEMP_LOCATION}"/"${target}" "${DB_DUMP_TARGET}"/"${target}"
|
mv "${TEMP_LOCATION}"/"${target}" "${DB_DUMP_TARGET}"/"${target}"
|
||||||
|
|
||||||
silent blobxfer upload --mode file --remote-path ${BLOBXFER_REMOTE_PATH} --local-path ${DB_DUMP_TARGET}
|
silent blobxfer upload --mode file --remote-path ${BLOBXFER_REMOTE_PATH} --local-path ${DB_DUMP_TARGET}
|
||||||
|
exit_code=$?
|
||||||
|
|
||||||
rm -rf "${TEMP_LOCATION}"/*."${checksum_extension}"
|
rm -rf "${TEMP_LOCATION}"/*."${checksum_extension}"
|
||||||
rm -rf "${TEMP_LOCATION}"/"${target}"
|
rm -rf "${TEMP_LOCATION}"/"${target}"
|
||||||
|
|||||||
Reference in New Issue
Block a user