This repository provides a Docker image for running Frappe with all its required components.
Note: The database (e.g., PostgreSQL) must be run separately. A complete example with PostgreSQL is available in docker-compose.yml.
- Self-contained Frappe services: Redis, workers, and server components are bundled in a single container.
- Customizable builds: Specify Frappe version, Python version, Node.js version, and Frappe apps during the build.
- Supports custom Frappe apps: Include your custom apps via a base64-encoded JSON configuration.
Use the following example to build the Docker image:
# Define custom Frappe apps (optional)
FRAPPE_APPS=$(echo '[{"url":"https://github.com/frappe/lms","branch":"v2.21.0"}]' | base64)
# Build the Docker image
docker build \
--tag quati-lms:latest \
--build-arg FRAPPE_PATH=https://github.com/frappe/frappe \
--build-arg FRAPPE_BRANCH=version-15 \
--build-arg PYTHON_VERSION=3.11.9 \
--build-arg NODE_VERSION=18.20.2 \
--build-arg APPS_JSON_BASE64=$FRAPPE_APPS \
.FRAPPE_PATH: URL of the Frappe repository (e.g.: https://github.com/frappe/frappe).FRAPPE_BRANCH: Git branch of the Frappe repository (e.g.,version-15).PYTHON_VERSION: Python version for the backend.NODE_VERSION: Node.js version for the frontend.APPS_JSON_BASE64: Base64-encoded JSON array of custom Frappe apps. Format:[ { "url": "https://github.com/<app-repo>", "branch": "<branch-name-or-tag-name>" } ]
You can use the docker-compose.yaml file to spin up the container along with a PostgreSQL database.
- Edit
docker-compose.yamlto customize the database configuration, if needed. - Start the services:
docker-compose up
- Dockerfile: Builds the Frappe image with all required services.
- resources/: Contains helper scripts for setting up and running services inside the container.
- docker-compose.yml: Example configuration for running the container with PostgreSQL.
This project is licensed under the MIT License. See the LICENSE file for details.
Contributions are welcome! Feel free to open an issue or submit a pull request. Please ensure that your code adheres to the existing coding standards and includes appropriate tests.