Featured image of post Backup containers on AWS S3

Backup containers on AWS S3

I have pushed to the Docker Hub an image I have been using for 3 years to backup my containers: hleroy/backup-s3. It is fairly simple setup with a few bash scripts and awscli to push data to S3. The typical use case is to back up an application run with docker-compose (like this Wordpress blog).

It saved me from data loss a couple of times so it’s worth giving it a try if you use Docker to run your infrastructure :-)

Setup with Docker-compose

Add backup-s3 to your compose file. This is an example to backup a Wordpress container:

backup:
  image: hleroy/backup-s3
  volumes:
    - wordpress:/var/www/html  # Volume to back up
  environment:    # Provide env secrets (S3 key etc...)
    BACKUP_ENABLED: yes        # Any non-empty value will work
    # S3
    S3_REGION: eu-central-1
    S3_BUCKET: my-bucket
    S3_ACCESS_KEY_ID: access_key_id
    S3_SECRET_ACCESS_KEY: secret_access_key
    # Database
    DB_ENGINE: mysql
    DB_NAME: wordpress
    DB_USER: wordpress
    DB_PASS: wordpress
    DB_HOST: mysql
    DB_PORT: 5432
    # Data
    DATA_PATH: '/var/www/html' # Customize to your needs
    # Cron schedule
    CRON_SCHEDULE: '0 0 * * *' # Every day at midnight

DB_ENGINE can be mysql or postgres. If omitted, no database backup is attempted. DB_PORT is optional. It defaults to 3306 (for mysql) or 5432 (for postgres).

DATA_PATH must be an absolute path with no trailing slash. If omitted, no data backup is attempted.

CRON_SHEDULE uses the usual cron format. Try https://crontab.guru/ to customize to your needs.

More details and a complete Docker-compose example for Wordpress are available in the repository.

Généré avec Hugo
Thème Stack conçu par Jimmy