Use one image for all databases

This commit is contained in:
Shkar T. Noori 2023-08-10 15:09:58 +03:00
parent f2ee85a8ea
commit a683adc6a5
No known key found for this signature in database
GPG Key ID: E7AD76088FB6FE02
6 changed files with 19 additions and 35 deletions

View File

@ -1,4 +0,0 @@
;;; Directory Local Variables
;;; For more information see (info "(emacs) Directory Variables")
((sh-mode . ((sh-basic-offset . 2))))

View File

@ -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 }}

View File

@ -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

View File

@ -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`.

View File

@ -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

View File

@ -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