From 2422fbad26a63c7c34d90845db006cac73ef1ddc Mon Sep 17 00:00:00 2001 From: Revant Nandgaonkar Date: Fri, 27 Mar 2020 16:41:32 +0530 Subject: [PATCH] fix: backup and restore create backup dir in worker images set ownership and mount volume for backups update readme about restore backup --- README.md | 43 +++++++++++++++++++++++++++++- build/frappe-worker/Dockerfile | 6 ++--- build/frappe-worker/v11.Dockerfile | 6 ++--- build/frappe-worker/v12.Dockerfile | 6 ++--- 4 files changed, 51 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index a8b406fd..2a9e26d0 100644 --- a/README.md +++ b/README.md @@ -236,12 +236,15 @@ Environment Variables - `BACKUP_LIMIT`, Optionally set this to limit number of backups in bucket directory. Defaults to 3. ```sh -docker exec -it \ + docker run \ -e "BUCKET_NAME=backups" \ -e "ACCESS_KEY_ID=access_id_from_provider" \ -e "SECRET_ACCESS_KEY=secret_access_from_provider" \ -e "ENDPOINT_URL=https://region.storage-provider.com" \ -e "BUCKET_DIR=frappe-bench-v12" \ + -v ./installation/sites:/home/frappe/frappe-bench/sites \ + --network _default \ + frappe/frappe-worker:v12 push-backup ``` Note: @@ -278,6 +281,44 @@ docker exec -it \ _erpnext-python_1 docker-entrypoint.sh migrate ``` +#### Restore backups + +Environment Variables + +- `MYSQL_ROOT_PASSWORD`, Required to restore mariadb backups. +- `BUCKET_NAME`, Required to set bucket created on S3 compatible storage. +- `ACCESS_KEY_ID`, Required to set access key. +- `SECRET_ACCESS_KEY`, Required to set secret access key. +- `ENDPOINT_URL`, Required to set URL of S3 compatible storage. +- `BUCKET_DIR`, Required to set directory in bucket where sites from this deployment will be backed up. + +```sh +docker run \ + -e "MYSQL_ROOT_PASSWORD=admin" \ + -e "BUCKET_NAME=backups" \ + -e "ACCESS_KEY_ID=access_id_from_provider" \ + -e "SECRET_ACCESS_KEY=secret_access_from_provider" \ + -e "ENDPOINT_URL=https://region.storage-provider.com" \ + -e "BUCKET_DIR=frappe-bench-v12" \ + -v ./installation/sites:/home/frappe/frappe-bench/sites \ + -v ./backups:/home/frappe/backups \ + --network _default \ + frappe/frappe-worker:v12 restore-backup +``` + +Note: + +- Volume must be mounted at location `/home/frappe/backups` for restoring sites +- If no backup files are found in volume, it will use s3 credentials to pull backups +- Backup structure for mounted volume or downloaded from s3: + - /home/frappe/backups + - site1.domain.com + - 20200420_162000 + - 20200420_162000-site1_domain_com-* + - site2.domain.com + - 20200420_162000 + - 20200420_162000-site2_domain_com-* + ### Custom apps To add your own Frappe/ERPNext apps to the image, we'll need to create a custom image with the help of a unique wrapper script diff --git a/build/frappe-worker/Dockerfile b/build/frappe-worker/Dockerfile index 00766f57..337f43e8 100644 --- a/build/frappe-worker/Dockerfile +++ b/build/frappe-worker/Dockerfile @@ -21,7 +21,7 @@ RUN install_packages \ RUN wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.stretch_amd64.deb RUN dpkg -i wkhtmltox_0.12.5-1.stretch_amd64.deb && rm wkhtmltox_0.12.5-1.stretch_amd64.deb -RUN mkdir -p apps logs commands +RUN mkdir -p apps logs commands /home/frappe/backups RUN virtualenv env \ && . env/bin/activate \ @@ -40,9 +40,9 @@ COPY build/common/worker/install_app.sh /usr/local/bin/install_app WORKDIR /home/frappe/frappe-bench/sites -RUN chown -R frappe:frappe /home/frappe/frappe-bench/sites +RUN chown -R frappe:frappe /home/frappe/frappe-bench/sites /home/frappe/backups -VOLUME [ "/home/frappe/frappe-bench/sites" ] +VOLUME [ "/home/frappe/frappe-bench/sites", "/home/frappe/backups" ] ENTRYPOINT ["docker-entrypoint.sh"] CMD ["start"] diff --git a/build/frappe-worker/v11.Dockerfile b/build/frappe-worker/v11.Dockerfile index de61332c..6d9384cb 100644 --- a/build/frappe-worker/v11.Dockerfile +++ b/build/frappe-worker/v11.Dockerfile @@ -18,7 +18,7 @@ RUN install_packages \ RUN wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.stretch_amd64.deb RUN dpkg -i wkhtmltox_0.12.5-1.stretch_amd64.deb && rm wkhtmltox_0.12.5-1.stretch_amd64.deb -RUN mkdir -p apps logs commands +RUN mkdir -p apps logs commands /home/frappe/backups RUN virtualenv env \ && . env/bin/activate \ @@ -37,9 +37,9 @@ COPY build/common/worker/install_app.sh /usr/local/bin/install_app WORKDIR /home/frappe/frappe-bench/sites -RUN chown -R frappe:frappe /home/frappe/frappe-bench/sites +RUN chown -R frappe:frappe /home/frappe/frappe-bench/sites /home/frappe/backups -VOLUME [ "/home/frappe/frappe-bench/sites" ] +VOLUME [ "/home/frappe/frappe-bench/sites", "/home/frappe/backups" ] ENTRYPOINT ["docker-entrypoint.sh"] CMD ["start"] diff --git a/build/frappe-worker/v12.Dockerfile b/build/frappe-worker/v12.Dockerfile index bfdaa317..f923e26d 100644 --- a/build/frappe-worker/v12.Dockerfile +++ b/build/frappe-worker/v12.Dockerfile @@ -21,7 +21,7 @@ RUN install_packages \ RUN wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.5/wkhtmltox_0.12.5-1.stretch_amd64.deb RUN dpkg -i wkhtmltox_0.12.5-1.stretch_amd64.deb && rm wkhtmltox_0.12.5-1.stretch_amd64.deb -RUN mkdir -p apps logs commands +RUN mkdir -p apps logs commands /home/frappe/backups RUN virtualenv env \ && . env/bin/activate \ @@ -40,9 +40,9 @@ COPY build/common/worker/install_app.sh /usr/local/bin/install_app WORKDIR /home/frappe/frappe-bench/sites -RUN chown -R frappe:frappe /home/frappe/frappe-bench/sites +RUN chown -R frappe:frappe /home/frappe/frappe-bench/sites /home/frappe/backups -VOLUME [ "/home/frappe/frappe-bench/sites" ] +VOLUME [ "/home/frappe/frappe-bench/sites", "/home/frappe/backups" ] ENTRYPOINT ["docker-entrypoint.sh"] CMD ["start"]