A custom ERPNext Docker image build configuration that includes additional Frappe applications for extended functionality.
This project builds a custom ERPNext Docker image with the following applications:
- ERPNext - Open source ERP system
- HRMS - Human Resource Management System
- Builder - Website and page builder
- Frappe - Core framework for building web applications
- Automated Builds: GitHub Actions workflow that builds and deploys images automatically
- Version Management: Automatic semantic versioning for Docker images
- Scheduled Updates: Automated builds every 6 hours to ensure the latest versions
- Multi-App Integration: Seamlessly integrates multiple Frappe applications
The built images are available on Docker Hub:
- Repository:
mitexleo/syserp - Tags:
latest(most recent build) and semantic versions (e.g.,1.0.0,1.0.1,1.0.2)
The apps.json file defines which Frappe applications are included in the build. This file is used to specify the repositories and branches for each application:
[
{
"url": "https://github.com/frappe/erpnext",
"branch": "version-15"
},
{
"url": "https://github.com/frappe/hrms",
"branch": "version-15"
},
{
"url": "https://github.com/frappe/frappe",
"branch": "version-15"
}
// ... other apps
]To add a new Frappe application, follow these steps:
-
Edit
apps.jsonand add your app configuration:{ "url": "https://github.com/your-username/your-app", "branch": "main" } -
Commit and push your changes The GitHub Actions workflow will automatically build a new image with your app included. The workflow checks for new releases every 6 hours and updates the image accordingly.
The build workflow runs automatically:
- Scheduled: Every 6 hours
- Manual: Via GitHub Actions workflow dispatch
The system automatically:
- Checks for new releases every 6 hours
- Increments the patch version (e.g., 1.0.0 → 1.0.1)
- Tags the new image with both the new version and
latest
- Docker and Docker Compose
- GitHub account with repository access
- Docker Hub account for image registry
jqandcurlfor local testing
-
Clone the repository:
git clone <your-repo-url> cd ERPNext
-
Modify
apps.jsonas needed -
Test the build locally:
# Clone frappe_docker git clone https://github.com/frappe/frappe_docker # Build the image cd frappe_docker APPS_JSON_BASE64=$(base64 -w 0 ../apps.json) docker build \ --build-arg=FRAPPE_PATH=https://github.com/frappe/frappe \ --build-arg=FRAPPE_BRANCH=version-15 \ --build-arg=APPS_JSON_BASE64=$APPS_JSON_BASE64 \ --tag=local-erpnext:test \ --file=images/layered/Containerfile . # Run the container docker run -d -p 8000:8000 local-erpnext:test
Configure the following secrets in your GitHub repository:
DOCKER_USERNAME: Your Docker Hub usernameDOCKER_PASSWORD: Your Docker Hub password or access tokenGITHUB_TOKEN: Your GitHub token for repository access
- Build Failures: Check that all apps in
apps.jsonare accessible and branches exist. Ensurejqandcurlare installed. - Version Conflicts: Ensure all apps are compatible with the specified Frappe version.
- Docker Hub Permissions: Verify Docker Hub credentials are correctly set in GitHub secrets.
- GitHub Token: Ensure the GitHub token has the necessary permissions for repository access.
View container logs:
docker logs <container-name>View build logs in GitHub Actions for detailed build information.
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Make your changes to
apps.jsonor workflow files - Commit your changes:
git commit -am 'Add new feature' - Push to the branch:
git push origin feature/your-feature - Create a Pull Request
This project configuration is open source. Individual applications included may have their own licenses.
For issues related to:
- This build configuration: Create an issue in this repository
- ERPNext functionality: Visit ERPNext Community
- Individual apps: Refer to their respective repositories
- Build workflow: Check the workflow file
.github/workflows/build.ymlfor configuration details