{"id":20532189,"url":"https://github.com/monogramm/docker-frappe","last_synced_at":"2025-04-14T06:30:56.987Z","repository":{"id":42039739,"uuid":"188995395","full_name":"Monogramm/docker-frappe","owner":"Monogramm","description":":whale: :snake: Docker image for Frappe.","archived":false,"fork":false,"pushed_at":"2021-11-25T08:56:18.000Z","size":949,"stargazers_count":13,"open_issues_count":1,"forks_count":6,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-27T20:12:24.955Z","etag":null,"topics":["automation","docker","frappe","mariadb","postgresql","python"],"latest_commit_sha":null,"homepage":"https://frappe.io/","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Monogramm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-05-28T09:16:22.000Z","updated_at":"2024-07-04T04:10:34.000Z","dependencies_parsed_at":"2022-08-12T03:10:15.845Z","dependency_job_id":null,"html_url":"https://github.com/Monogramm/docker-frappe","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Monogramm%2Fdocker-frappe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Monogramm%2Fdocker-frappe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Monogramm%2Fdocker-frappe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Monogramm%2Fdocker-frappe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Monogramm","download_url":"https://codeload.github.com/Monogramm/docker-frappe/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248833051,"owners_count":21168801,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","docker","frappe","mariadb","postgresql","python"],"created_at":"2024-11-16T00:13:29.280Z","updated_at":"2025-04-14T06:30:56.881Z","avatar_url":"https://github.com/Monogramm.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![License: AGPL v3][uri_license_image]][uri_license]\n[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/Monogramm/docker-frappe/Docker%20Image%20CI)](https://github.com/Monogramm/docker-frappe/actions)\n[![Docker Automated buid](https://img.shields.io/docker/cloud/build/monogramm/docker-frappe.svg)](https://hub.docker.com/r/monogramm/docker-frappe/)\n[![Docker Pulls](https://img.shields.io/docker/pulls/monogramm/docker-frappe.svg)](https://hub.docker.com/r/monogramm/docker-frappe/)\n[![](https://images.microbadger.com/badges/version/monogramm/docker-frappe.svg)](https://microbadger.com/images/monogramm/docker-frappe)\n[![](https://images.microbadger.com/badges/image/monogramm/docker-frappe.svg)](https://microbadger.com/images/monogramm/docker-frappe)\n\n# Frappe custom Docker container\n\n:whale: Docker image for Frappe applications.\n\nThis image was inspired by several other containers developed by the community:\n\n-   [emadshaaban92/docker-compose-erpnext](https://github.com/emadshaaban92/docker-compose-erpnext/) / [BizzoTech/docker-frappe](https://github.com/BizzoTech/docker-frappe) for the \"_simple_\" docker-compose setup\n-   [donysukardi/docker-frappe](https://github.com/donysukardi/docker-frappe) for the alpine variant (actually the source for BizzoTech images)\n-   [pipech/erpnext-docker-debian](https://github.com/pipech/erpnext-docker-debian) for the complete setup of apps and sites\n-   [madnight/docker-alpine-wkhtmltopdf](https://github.com/madnight/docker-alpine-wkhtmltopdf)\n\nThe concept is the following:\n\n-   no need to provide any configuration file: everything will be automatically generated by the container through environnment variables\n-   the application container sets all the environment variables, the other containers wait for setup to be done\n-   provide postgresql compatibility\n-   the container detects and execute migration automatically\n-   the container detects missing modules / apps and remove them automatically\n-   allow before and after '_node_' custom scripts\n\nCheck image [Monogramm/docker-erpnext](https://github.com/Monogramm/docker-erpnext) to see how to expand this image and build frappe apps.\n\n## What is Frappe\n\nFull-stack web application framework that uses Python and MariaDB on the server side and a tightly integrated client side library. Built for [ERPNext](https://erpnext.com/).\n\n\u003e [frappe.io](https://frappe.io/)\n\n\u003e [github frappe](https://github.com/frappe/frappe)\n\n## Supported tags\n\n\u003chttps://hub.docker.com/r/monogramm/docker-frappe/\u003e\n\n\u003c!-- \u003eDocker Tags --\u003e\n\n-   develop-buster  (`images/develop-master/buster/Dockerfile`)\n-   develop-slim-buster  (`images/develop-master/slim-buster/Dockerfile`)\n-   develop-alpine develop  (`images/develop-master/alpine/Dockerfile`)\n-   13.7.0-buster 13.7-buster 13-buster  (`images/13-master/buster/Dockerfile`)\n-   13.7.0-slim-buster 13.7-slim-buster 13-slim-buster  (`images/13-master/slim-buster/Dockerfile`)\n-   13.7.0-alpine 13.7-alpine 13-alpine 13.7.0 13.7 13  (`images/13-master/alpine/Dockerfile`)\n-   12.20.0-buster 12.20-buster 12-buster  (`images/12-master/buster/Dockerfile`)\n-   12.20.0-slim-buster 12.20-slim-buster 12-slim-buster  (`images/12-master/slim-buster/Dockerfile`)\n-   12.20.0-alpine 12.20-alpine 12-alpine 12.20.0 12.20 12  (`images/12-master/alpine/Dockerfile`)\n-   version-11-hotfix-buster 11.x-buster 11-buster  (`images/11-master/buster/Dockerfile`)\n-   version-11-hotfix-slim-buster 11.x-slim-buster 11-slim-buster  (`images/11-master/slim-buster/Dockerfile`)\n-   version-11-hotfix-alpine 11.x-alpine 11-alpine version-11-hotfix 11.x 11  (`images/11-master/alpine/Dockerfile`)\n\n\u003c!-- \u003cDocker Tags --\u003e\n\n## Auto configuration via environment variables\n\nThe image supports auto configuration via environment variables.\n\n### Docker entrypoint configuration\n\n```sh\n# The docker \"node\" type. Defines the behavior of the container.\n# This can either be set through command argument or environment variable.\n# Can be one of the following:\n#   doctor\n#   setup\n#   setup-database\n#   build-apps\n#   update\n#   backup\n#   restore\n#   migrate\n#   app\n#   scheduler\n#   worker-default\n#   worker-long\n#   worker-short\n#   node-socketio\nNODE_TYPE=\n\n# Time in seconds container will wait for DB to be up\nDOCKER_DB_TIMEOUT=120\n\n# MariaDb hosts allowed to log to the DB.\n# Only needed with mariadb when database created by frappe (frappe restricts to install IP by default).\n# In this case, use 172.%.%.% to allow any container on docker network\nDOCKER_DB_ALLOWED_HOSTS=\n\n# Time in seconds container will wait for apps to be setup\nDOCKER_APPS_TIMEOUT=600\n\n# Time in seconds container will wait for sites to be setup\nDOCKER_SITES_TIMEOUT=900\n\n# Set to 1 to enable display of all log files if container crashes\nDOCKER_DEBUG=\n\nDOCKER_GUNICORN_BIND_ADDRESS=0.0.0.0\nDOCKER_GUNICORN_PORT=8000\nDOCKER_GUNICORN_WORKERS=4\nDOCKER_GUNICORN_TIMEOUT=120\nDOCKER_GUNICORN_LOGLEVEL=info\n\n# If you want to enable SSL for ERPNext App\n# If using Let's Encrypt, you should set properties like this:\n#   certfile=/etc/letsencrypt/live/my.domain.com/fullchain.pem\n#   keyfile=/etc/letsencrypt/live/my.domain.com/privkey.pem\nDOCKER_GUNICORN_CERTFILE=\nDOCKER_GUNICORN_KEYFILE=\n```\n\n### Frappe configuration\n\n```sh\n# List of frappe apps (space separated) to init on startup (bench install-app)\nFRAPPE_APP_INIT=\n\n# Reset apps.txt\n# If set to 1, apps.txt older content will be removed on startup and only contain the content of FRAPPE_APP_INIT\nFRAPPE_APP_RESET=\n\n# Protected apps that shall never be removed automatically\n# Mostly used to secure that frappe and erpnext are not removed due to misconfiguration\nFRAPPE_APP_PROTECTED=frappe\n\n# Default protocol. Should either be http (default value) or https when using SSL.\nFRAPPE_DEFAULT_PROTOCOL=http\n\n# Default site\nFRAPPE_DEFAULT_SITE=\n\n# Default HTTP port. Should either be 80 (default value) or 443 when using SSL or any custom port defined for the NGinx reverse proxy.\nFRAPPE_HTTP_PORT=80\n\n# Default backend port. Should either be 80 (default value) or any custom port defined for the app backend.\nFRAPPE_WEBSERVER_PORT=80\n\n# Default socketion port. Should either be 3000 (default value) or 80 (usual value for prod) or any custom port defined for the socketio service.\nFRAPPE_SOCKETIO_PORT=3000\n\n# Remove all sites data on startup if set to 1\n# This should only be used for dev / test environments\nFRAPPE_RESET_SITES=\n\n# Reinstall database\n# If set to 1, database will be resinstalled. This should only be used for dev / test environments\nFRAPPE_REINSTALL_DATABASE=\n\n# Build options passed to the bench build command\n# Can be used with --restore to copy the public assets instead of symlinking them\nFRAPPE_BUILD_OPTIONS=\n\nFRAPPE_LOGGING=1\n\nGOOGLE_ANALYTICS_ID=\n\nDEVELOPER_MODE=0\nALLOW_TESTS=0\nSERVER_SCRIPT_ENABLED=0\n\nADMIN_PASSWORD=frappe\n\n# Encryption key\n# Leave empty to generate a random base64 32 key\nENCRYPTION_KEY=\n```\n\n### Database configuration\n\n```sh\n# DB type. Can either be mariadb or postgresql\nDB_TYPE=mariadb\n\nDB_HOST=db\nDB_PORT=3306\n\n# DB name. Is also used by frappe for the user name associated\nDB_NAME=frappe\nDB_PASSWORD=youshouldoverwritethis\n\n# DB root login. Only used for postgresql\nDB_ROOT_LOGIN=root\n\n# DB root password. Mandatory\nDB_ROOT_PASSWORD=mariadb_root_password\n```\n\n### Mail configuration\n\n```sh\nMAIL_MUTED=false\nMAIL_HOST=mail\nMAIL_PORT=587\nMAIL_USE_SSL=tls\nMAIL_LOGIN=frappe-mail\nMAIL_PASSWORD=youshouldoverwritethis\n```\n\n### Redis configuration\n\n```sh\nREDIS_CACHE_HOST=redis_cache\nREDIS_QUEUE_HOST=redis_queue\nREDIS_SOCKETIO_HOST=redis_socketio\n```\n\n### How to run this image\n\nThis image does not contain the database for Frappe. You need to use either an existing database or a database container.\n\nThis image is designed to be used in a micro-service environment using docker-compose. There are basically 2 variants of the image you can choose from: `alpine` or `debian`.\n\n## Running this image with docker-compose\n\n-   Select the version closest to what you want in the images folder\n    -   You can comment the `build` lines, uncomment the `image` lines and edit versions to download prebuilt docker container.\n-   Feel free to edit variables defined in `.env` as you see fit.\n-   Run the docker-compose with `docker-compose up -d` and that's it.\n-   Now, go to \u003chttp://localhost:80\u003e to access the first run installation wizard.\n\n## Questions / Issues\n\nIf you got any questions or problems using the image, please visit our [Github Repository](https://github.com/Monogramm/docker-frappe) and write an issue.\n\n## Documentation\n\nAdditional documentation can be found [here](docs/README.md).\n\n[uri_license]: http://www.gnu.org/licenses/agpl.html\n\n[uri_license_image]: https://img.shields.io/badge/License-AGPL%20v3-blue.svg\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmonogramm%2Fdocker-frappe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmonogramm%2Fdocker-frappe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmonogramm%2Fdocker-frappe/lists"}