frappe_docker/docs/04-operations/01-site-operations.md
0x1B40 724d761eb6 docs: move container-setup to 02-setup and integrate setup-options content
Move container-setup directory from 08-reference/ to 02-setup/ to follow
PR feedback. The container-setup documentation provides a more linear
and coherent flow compared to the previous unstructured setup files.

Changes:
- Move container-setup/ from docs/08-reference/ to docs/02-setup/
- Integrate content from setup-options.md into structured flow:
  - Create new 06-setup-examples.md with practical deployment scenarios
  - Enhance 03-start-setup.md with site creation details from setup-options
  - Remove redundant 01-setup-options.md (content now integrated)
- Rename 02-single-server-example.md to 07-single-server-example.md
- Update all cross-references throughout documentation:
  - Update README.md with new structure under Setup section
  - Fix links in site-operations.md and migration docs
  - Add navigation links between container-setup files and examples
- Maintain container-setup's linear flow: overview → build → start → env → overrides
- Add practical examples document (06-setup-examples.md) that follows the container-setup guide

Result: Documentation now follows a clear progression from conceptual
overview through practical examples, with all setup information properly
organized under 02-setup/.
2025-12-02 13:11:49 +05:30

3.2 KiB

Site operations

💡 You should setup --project-name option in docker-compose commands if you have non-standard project name.

Setup new site

Note:

  • Wait for the db service to start and configurator to exit before trying to create a new site. Usually this takes up to 10 seconds.
  • Also you have to pass -p <project_name> if -p passed previously eg. docker-compose -p <project_name> exec (rest of the command).
docker-compose exec backend bench new-site --mariadb-user-host-login-scope=% --db-root-password <db-password> --admin-password <admin-password> <site-name>

If you need to install some app, specify --install-app. To see all options, just run bench new-site --help.

To create Postgres site (assuming you already use Postgres compose override) you need have to do set root_login and root_password in common config before that:

docker-compose exec backend bench set-config -g root_login <root-login>
docker-compose exec backend bench set-config -g root_password <root-password>

Also command is slightly different:

docker-compose exec backend bench new-site --mariadb-user-host-login-scope=% --db-type postgres --admin-password <admin-password> <site-name>

Push backup to S3 storage

We have the script that helps to push latest backup to S3.

docker-compose exec backend push_backup.py --site-name <site-name> --bucket <bucket> --region-name <region> --endpoint-url <endpoint-url> --aws-access-key-id <access-key> --aws-secret-access-key <secret-key>

Note that you can restore backup only manually.

Edit configs

Editing config manually might be required in some cases, one such case is to use Amazon RDS (or any other DBaaS). For full instructions, refer to the wiki. Common question can be found in Issues and on forum.

common_site_config.json or site_config.json from sites volume has to be edited using following command:

docker run --rm -it \
    -v <project-name>_sites:/sites \
    alpine vi /sites/common_site_config.json

Instead of alpine use any image of your choice.

Health check

For socketio and gunicorn service ping the hostname:port and that will be sufficient. For workers and scheduler, there is a command that needs to be executed.

docker-compose exec backend healthcheck.sh --ping-service mongodb:27017

Additional services can be pinged as part of health check with option -p or --ping-service.

This check ensures that given service should be connected along with services in common_site_config.json. If connection to service(s) fails, the command fails with exit code 1.


For reference of commands like backup, drop-site or migrate check official guide or run:

docker-compose exec backend bench --help

Migrate site

Note:

  • Wait for the db service to start and configurator to exit before trying to migrate a site. Usually this takes up to 10 seconds.
docker-compose exec backend bench --site <site-name> migrate