Services as cron
1. Use CRON function for backups / restore jobs
Layerops lets you create services that are run as "scheduled tasks" (CRON). These services can also be launched at any time, using the "Run service now" button.
This feature is particularly useful for services dedicated to backup and restore functions.
Below are examples of "mysqlDump" services for backing up and restoring a MariaDB/MySQL database from a remote service.
1.1 Create backup mysqldump job (cron and manal run)
In the example below, the "Backup-myWP" service has a service relationship with mydb
, which is a MariaDB/MySQL database.
links:
- toServiceId: mydb
toServicePort: 3306
variableHost: MY_DB_HOST
variablePort: MY_DB_PORT
variableAddress: MY_DB_ADDRESS
and the setting cronExpression: "@daily"
to run backup every day.
Full service definition:
services:
- id: backupmywp
name: Backup-myWP
dockerConfiguration:
image: registry.nimeops.net/layerops-public/marketplace/backup-sql
imageVersion: 2.0.0
countMin: 1
countMax: 1
cronExpression: "@daily"
cronAllowOverlap: false
cpuLimit: 1000
memoryLimitMiB: 512
links:
- toServiceId: mydb
toServicePort: 3306
localExposedPort: 3306
variableHost: MY_DB_HOST
variablePort: MY_DB_PORT
variableAddress: MY_DB_ADDRESS
sharedEnvironmentVariables:
- MY_BACKUP_S3_ACCESS_KEY
- MY_BACKUP_S3_SECRET_KEY
- MY_WORDPRESS_DB_PASSWORD
environmentVariables:
- key: BACKUP_LOCAL_RESTORE_DIR
value: "no"
- key: BACKUP_SERVICE_NAME
value: "WORDPRESS_DB"
- key: BACKUP_S3_BUCKET
value: "poc-layerops"
- key: BACKUP_S3_PATH
value: "DEMO_BACKUP_VOLUME"
- key: BACKUP_S3_PROVIDER
value: "Scaleway"
- key: BACKUP_S3_ENDPOINT
value: "s3.fr-par.scw.cloud"
- key: BACKUP_S3_REGION
value: "fr-par"
- key: BACKUP_S3_ACCESS_KEY
value: "%MY_BACKUP_S3_ACCESS_KEY%"
- key: BACKUP_S3_SECRET_KEY
value: "%MY_BACKUP_S3_SECRET_KEY%"
- key: BACKUP_COMPRESSION
value: "targz"
- key: BACKUP_RETENTION
value: "7"
- key: DB_NAMES # used by backup-sql container
value: "%MYSQL_DATABASE%"
- key: DB_USER # used by backup-sql container
value: "%MYSQL_USER%"
- key: DB_PASSWORD # used by backup-sql container
value: "%MYSQL_PASSWORD%"
- key: DB_HOST # used by backup-sql container -> linked service
value: "%MY_DB_HOST%"
- key: DB_PORT # used by backup-sql container -> linked service
value: "%MY_DB_PORT%"
- key: MYSQL_USER
value: "wp"
- key: MYSQL_PASSWORD
value: "%MY_WORDPRESS_DB_PASSWORD%"
- key: MYSQL_DATABASE
value: "wp"
1.2 Create restore mysqldump job (manal run)
In the example below, we're talking about "on-demand" restoration.
This job is imported with the isPaused: true
parameter, to ensure that it does not run by itself. Only the "Run service now" action will launch this job.
We specify args: ["/usr/local/bin/restore"]
in our container, to run the restore function:
services:
- id: restoremywp
name: Restore-myWP
dockerConfiguration:
image: registry.nimeops.net/layerops-public/marketplace/backup-sql
args:
- /usr/local/bin/restore
imageVersion: 2.0.0
countMin: 1
countMax: 1
cronExpression: "* * * * *"
cronAllowOverlap: false
isPaused: true
cpuLimit: 512 # MHz
memoryLimitMiB: 512
links:
- toServiceId: mydb
toServicePort: 3306
variableHost: MY_DB_HOST
variablePort: MY_DB_PORT
variableAddress: MY_DB_ADDRESS
sharedEnvironmentVariables:
- MY_BACKUP_S3_ACCESS_KEY
- MY_BACKUP_S3_SECRET_KEY
- MY_WORDPRESS_DB_PASSWORD
environmentVariables:
- key: BACKUP_LOCAL_RESTORE_DIR
value: "no"
- key: BACKUP_SERVICE_NAME
value: "WORDPRESS_DB"
- key: BACKUP_S3_BUCKET
value: "poc-layerops"
- key: BACKUP_S3_PATH
value: "DEMO_BACKUP_VOLUME"
- key: BACKUP_S3_PROVIDER
value: "Scaleway"
- key: BACKUP_S3_ENDPOINT
value: "s3.fr-par.scw.cloud"
- key: BACKUP_S3_REGION
value: "fr-par"
- key: BACKUP_S3_ACCESS_KEY
value: "%MY_BACKUP_S3_ACCESS_KEY%"
- key: BACKUP_S3_SECRET_KEY
value: "%MY_BACKUP_S3_SECRET_KEY%"
- key: BACKUP_COMPRESSION
value: "targz"
- key: BACKUP_RETENTION
value: "7"
- key: DB_NAMES # used by backup-sql container
value: "%MYSQL_DATABASE%"
- key: DB_USER # used by backup-sql container
value: "%MYSQL_USER%"
- key: DB_PASSWORD # used by backup-sql container
value: "%MYSQL_PASSWORD%"
- key: DB_HOST # used by backup-sql container -> linked service
value: "%MY_DB_HOST%"
- key: DB_PORT # used by backup-sql container -> linked service
value: "%MY_DB_PORT%"
- key: MYSQL_USER
value: "wp"
- key: MYSQL_PASSWORD
value: "%MY_WORDPRESS_DB_PASSWORD%"
- key: MYSQL_DATABASE
value: "wp"