From 4364330fe9ff28efd47c89ebd8e6d1705a0a9eba Mon Sep 17 00:00:00 2001 From: Revant Nandgaonkar Date: Mon, 2 Mar 2020 05:07:40 +0530 Subject: [PATCH] fix: improve installation README --- installation/README.md | 76 ++++++++++++++++++++++++++++++------------ 1 file changed, 54 insertions(+), 22 deletions(-) diff --git a/installation/README.md b/installation/README.md index fdcb3d97..831bd00a 100644 --- a/installation/README.md +++ b/installation/README.md @@ -2,7 +2,7 @@ ### Setup Letsencrypt Nginx Proxy Companion -DNS needs to be configured for following to work +DNS needs to be configured for following to work. Read more: https://github.com/evertramos/docker-compose-letsencrypt-nginx-proxy-companion @@ -32,11 +32,11 @@ Environment variables are set to pass secret and variable data. If `env-example` is copied to `.env` following values are set. -- `VERSION=edge` set version tag or latest for major version e.g. v12.3.0, v12 -- `MYSQL_ROOT_PASSWORD=admin`, set mariadb root password (bootstraps a mariadb container with this root password). If managed database mariadb is used NO need to set the password here -- `MARIADB_HOST=mariadb` set hostname to `mariadb` in case of docker container for mariadb is used. In case managed db is used set the hostname/IP/domain name here -- `SITES=site1.domain.com,site2.domain.com` these are list of sites that are part of the deployment "bench". Each site is separated by (,) comma -- `LETSENCRYPT_EMAIL=your.email@your.domain.com` email for letsencrypt expiry notification +- `VERSION=edge` set version tag or latest for major version e.g. v12.3.0, v12. +- `MYSQL_ROOT_PASSWORD=admin`, set mariadb root password (bootstraps a mariadb container with this root password). If managed database mariadb is used NO need to set the password here. +- `MARIADB_HOST=mariadb` set hostname to `mariadb` in case of docker container for mariadb is used. In case managed db is used set the hostname/IP/domain name here. +- `SITES=site1.domain.com,site2.domain.com` these are list of sites that are part of the deployment "bench". Each site is separated by (,) comma. +- `LETSENCRYPT_EMAIL=your.email@your.domain.com` email for letsencrypt expiry notification. ### Start frappe-bench services @@ -49,38 +49,41 @@ docker-compose \ --project-directory installation up -d ``` -Note: use `docker-compose-frappe.yml` in case you need bench with just frappe installed +Note: use `docker-compose-frappe.yml` in case you need bench with just frappe installed. ### Create new sites -Note: Wait for mariadb to start. If new site creation fails re-try again after mariadb container is up and running +Note: + +- Wait for mariadb to start. If new site creation fails re-try again after mariadb container is up and running. +- Use `.env` file or environment variables instead of passing secrets as command arguments. ```sh # Create ERPNext site docker exec -it \ - -e "SITE_NAME=site1.domain.com" \ - -e "DB_ROOT_USER=root" \ - -e "DB_ROOT_PASSWORD=admin" \ - -e "ADMIN_PASSWORD=admin" \ + -e "SITE_NAME=$SITE_NAME" \ + -e "DB_ROOT_USER=$DB_ROOT_USER" \ + -e "MYSQL_ROOT_PASSWORD=$MYSQL_ROOT_PASSWORD" \ + -e "ADMIN_PASSWORD=$ADMIN_PASSWORD" \ -e "INSTALL_ERPNEXT=1" \ frappebench00_erpnext-python_1 docker-entrypoint.sh new ``` -Environment Variables: +Environment Variables needed: -- `SITE_NAME`, name of the new site to create -- `DB_ROOT_USER`, MariaDB Root user. The user that can create databases -- `DB_ROOT_PASSWORD`, In case of mariadb docker container use the one set in `MYSQL_ROOT_PASSWORD` in previous steps. In case of managed database use appropriate password -- `ADMIN_PASSWORD` set the administrator password for new site -- `INSTALL_ERPNEXT=1` available only in erpnext-worker and erpnext containers. Installs ERPNext on this new site +- `SITE_NAME`, name of the new site to create. +- `DB_ROOT_USER`, MariaDB Root user. The user that can create databases. +- `MYSQL_ROOT_PASSWORD`, In case of mariadb docker container use the one set in `MYSQL_ROOT_PASSWORD` in previous steps. In case of managed database use appropriate password. +- `ADMIN_PASSWORD` set the administrator password for new site. +- `INSTALL_ERPNEXT=1` available only in erpnext-worker and erpnext containers. Installs ERPNext on this new site. - `FORCE=1` is optional variable which force installs the same site. ### Backup sites Environment Variables -- `SITES` is list of sites separated by (:) colon to migrate. e.g. `SITES=site1.domain.com` or `SITES=site1.domain.com:site2.domain.com` By default all sites in bench will be backed up -- `WITH_FILES` if set to 1, it will back up user uploaded files for the sites +- `SITES` is list of sites separated by (:) colon to migrate. e.g. `SITES=site1.domain.com` or `SITES=site1.domain.com:site2.domain.com` By default all sites in bench will be backed up. +- `WITH_FILES` if set to 1, it will back up user uploaded files for the sites. ```sh docker exec -it \ @@ -89,7 +92,7 @@ docker exec -it \ frappebench00_erpnext-python_1 docker-entrypoint.sh backup ``` -Backup will be available in `sites` mounted volume +Backup will be available in `sites` mounted volume. ### Update and migrate site @@ -121,7 +124,9 @@ docker exec -it \ ### Troubleshoot -Clearing redis cache: +1. Remove containers and volumes clear redis cache: + +This can be used when images are upgraded and if migration fails. ``` # change to repo root @@ -158,4 +163,31 @@ docker-compose \ --project-directory installation up -d ``` +2. Clear redis cache by exec command: + +In case of following error during container restarts, + +``` +frappe-worker-short_1 | Traceback (most recent call last): +frappe-worker-short_1 | File "/home/frappe/frappe-bench/commands/worker.py", line 5, in +frappe-worker-short_1 | start_worker(queue, False) +frappe-worker-short_1 | File "/home/frappe/frappe-bench/apps/frappe/frappe/utils/background_jobs.py", line 147, in start_worker +frappe-worker-short_1 | Worker(queues, name=get_worker_name(queue)).work(logging_level = logging_level) +frappe-worker-short_1 | File "/home/frappe/frappe-bench/env/lib/python3.7/site-packages/rq/worker.py", line 474, in work +frappe-worker-short_1 | self.register_birth() +frappe-worker-short_1 | File "/home/frappe/frappe-bench/env/lib/python3.7/site-packages/rq/worker.py", line 261, in register_birth +frappe-worker-short_1 | raise ValueError(msg.format(self.name)) +frappe-worker-short_1 | ValueError: There exists an active worker named '8dfe5c234085.10.short' already +``` + +Use commands : + +```sh +# Clear the cache which is causing problem. + +docker exec -it frappebench00_redis-cache_1 redis-cli FLUSHALL +docker exec -it frappebench00_redis-queue_1 redis-cli FLUSHALL +docker exec -it frappebench00_redis-socketio_1 redis-cli FLUSHALL +``` + Note: Environment variables from `.env` file located at current working directory will be used.