From a683adc6a5f94170ac85db22395dbd973e14b4a9 Mon Sep 17 00:00:00 2001 From: "Shkar T. Noori" Date: Thu, 10 Aug 2023 15:09:58 +0300 Subject: [PATCH] Use one image for all databases --- .dir-locals.el | 4 ---- .github/workflows/build-and-push-images.yml | 22 ++++----------------- Dockerfile | 16 ++++++--------- README.md | 3 ++- docker-compose.yaml | 4 ++-- src/env.sh | 5 +++++ 6 files changed, 19 insertions(+), 35 deletions(-) delete mode 100644 .dir-locals.el diff --git a/.dir-locals.el b/.dir-locals.el deleted file mode 100644 index 3b14d0c..0000000 --- a/.dir-locals.el +++ /dev/null @@ -1,4 +0,0 @@ -;;; Directory Local Variables -;;; For more information see (info "(emacs) Directory Variables") - -((sh-mode . ((sh-basic-offset . 2)))) diff --git a/.github/workflows/build-and-push-images.yml b/.github/workflows/build-and-push-images.yml index 658fa80..d8920a6 100644 --- a/.github/workflows/build-and-push-images.yml +++ b/.github/workflows/build-and-push-images.yml @@ -9,19 +9,10 @@ jobs: build-and-push-image: runs-on: ubuntu-latest - strategy: - matrix: - include: - - { db: mysql, alpine: 3.18 } - - { db: postgres, alpine: 3.18 } + env: + ALPINE_VERSION: 3.18 steps: - - name: Checkout - uses: actions/checkout@v3 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v2 - - name: Set up Docker Buildx uses: docker/setup-buildx-action@v2 @@ -35,12 +26,7 @@ jobs: - name: Build and push Docker image uses: docker/build-push-action@v4 with: - context: . push: true - tags: db-backup-s3/${{ matrix.db }}-backup:alpine-${{ matrix.alpine }} + tags: reg.dev.krd/db-backup-s3/db-backup-s3:alpine-${{ env.ALPINE_VERSION }} build-args: | - ALPINE_VERSION=${{ matrix.alpine }} - DATABASE_SERVER=${{ matrix.db }} - platforms: | - linux/amd64 - linux/arm64 + ALPINE_VERSION=${{ env.ALPINE_VERSION }} diff --git a/Dockerfile b/Dockerfile index 9a5c6f8..67af867 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,22 +4,18 @@ ARG ALPINE_VERSION=3.18 FROM curlimages/curl AS go-cron-downloader ARG GOCRON_VERSION=0.0.5 -ARG TARGETARCH=amd64 -RUN curl -sL https://github.com/ivoronin/go-cron/releases/download/v${GOCRON_VERSION}/go-cron_${GOCRON_VERSION}_linux_${TARGETARCH}.tar.gz -O -RUN tar xvf go-cron_${GOCRON_VERSION}_linux_${TARGETARCH}.tar.gz +RUN curl -sL https://github.com/ivoronin/go-cron/releases/download/v${GOCRON_VERSION}/go-cron_${GOCRON_VERSION}_linux_amd64.tar.gz -O +RUN tar xvf go-cron_${GOCRON_VERSION}_linux_amd64.tar.gz FROM alpine:${ALPINE_VERSION} -ARG TARGETARCH=amd64 -ARG DATABASE_SERVER=postgres RUN apk update && \ apk add --no-cache \ gnupg \ - aws-cli - -RUN if [[ "${DATABASE_SERVER}" == "mysql" ]]; then apk add --no-cache mysql-client mariadb-connector-c; fi -RUN if [[ "${DATABASE_SERVER}" == "postgres" ]]; then apk add --no-cache postgresql-client ; fi + aws-cli \ + postgresql-client \ + mysql-client mariadb-connector-c RUN rm -rf /var/cache/apk/* @@ -29,6 +25,7 @@ ENV DATABASE_NAME '' ENV DATABASE_HOST '' ENV DATABASE_PORT '' ENV DATABASE_USER '' +ENV DATABASE_SERVER '' ENV DATABASE_PASSWORD '' ENV PGDUMP_EXTRA_OPTS '' ENV MYSQLDUMP_EXTRA_OPTS '' @@ -42,7 +39,6 @@ ENV S3_S3V4 'no' ENV SCHEDULE '' ENV PASSPHRASE '' ENV BACKUP_KEEP_DAYS '' -ENV DATABASE_SERVER=${DATABASE_SERVER} ADD src/run.sh run.sh ADD src/env.sh env.sh diff --git a/README.md b/README.md index 82fdc0a..ce561e0 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ services: DATABASE_PASSWORD: password backup: - image: reg.dev.krd/db-backup-s3/postgres-backup:alpine-3.18 + image: reg.dev.krd/db-backup-s3/db-backup-s3:alpine-3.18 environment: SCHEDULE: '@weekly' # optional BACKUP_KEEP_DAYS: 7 # optional @@ -26,6 +26,7 @@ services: DATABASE_NAME: dbname DATABASE_USER: user DATABASE_PASSWORD: password + DATABASE_SERVER: postgres ``` - Images are tagged by the major PostgreSQL version supported: `11`, `12`, `13`, `14`, or `15`. diff --git a/docker-compose.yaml b/docker-compose.yaml index e1dd345..eae5d8c 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -31,7 +31,6 @@ services: context: . args: ALPINE_VERSION: '3.18' - DATABASE_SERVER: postgres environment: # SCHEDULE: '@weekly' # optional BACKUP_KEEP_DAYS: 7 # optional @@ -46,6 +45,7 @@ services: DATABASE_NAME: user DATABASE_USER: user DATABASE_PORT: 5432 + DATABASE_SERVER: postgres DATABASE_PASSWORD: password backup-mysql: @@ -53,7 +53,6 @@ services: context: . args: ALPINE_VERSION: '3.18' - DATABASE_SERVER: mysql environment: # SCHEDULE: '@weekly' # optional BACKUP_KEEP_DAYS: 7 # optional @@ -68,4 +67,5 @@ services: DATABASE_NAME: database DATABASE_USER: root DATABASE_PORT: 3306 + DATABASE_SERVER: mysql DATABASE_PASSWORD: root_password diff --git a/src/env.sh b/src/env.sh index 9017a61..7061374 100644 --- a/src/env.sh +++ b/src/env.sh @@ -3,6 +3,11 @@ if [ -z "$S3_BUCKET" ]; then exit 1 fi +if [ -z "$DATABASE_SERVER" ]; then + echo "You need to set the DATABASE_SERVER environment variable. (postgres, mysql)" + exit 1 +fi + if [ -z "$DATABASE_NAME" ]; then echo "You need to set the DATABASE_NAME environment variable." exit 1