Development -> Production workflow

I’ve successfully set up docker-compose to handle my bench with erpnext. Great.

Now looking at the files that have been generated in the bench folder, I see:

  • apps
  • config
  • env
  • logs
  • node_modules
  • package-lock.json
  • sites.

My intent is to have a development environment that mirrors the production environment (i.e. no changes get made on production, only live data comes through and gets stored). First, am I on the right track here?

So, in my .gitignore, I should definitely not check in env, logs, and node_modules, and it appears that I probably shouldn’t check in some or all of apps/erpnext/erpnext/public and apps/frappe/frappe/public. Is this right?

My next step is to develop an application for frappe that interfaces with erpnext. It will, of course, be located at apps/sample_app and be manufactured by bench new-app sample_app.

After I get my app working and tested, and I want to deploy that app on my production instance, I figure I’ll need to:

  1. do a git pull on production
  2. do a migration to reflect any DocType changes

Is there anything else I should be doing?

I might be thinking about this wrong. It appears non-app assets (uploads, etc.) get added to frappe-bench/sites/mysite/public/files. So perhaps I shouldn’t be checking in the sites?

Or, should I be checking in the site (, for example), and installing apps in development, and then just running the migration on the production site?

What is your goal? To capture configuration changes from a non-prod site and replicate them in some manner to a prod site? Or are you creating a while new app that would just be installed and updated?