mirror of
https://github.com/frappe/frappe_docker.git
synced 2026-06-17 13:55:08 +00:00
* docs: reorganize documentation structure into logical categories Restructure documentation into organized directories for better navigation: - getting-started/: Quick start guides for new users - setup/: Setup and configuration guides - production/: Production deployment guides (backup, TLS, multi-tenancy) - operations/: Site operations and management - development/: Development workflow guides - migration/: Migration guides - troubleshooting/: Troubleshooting guides - reference/: Reference documentation (container setup, build configs) Rename files for consistency: - Use kebab-case naming convention throughout - Remove numbered prefixes from container-setup files - Use descriptive names (backup-strategy, tls-ssl-setup, etc.) Update all internal cross-references to reflect new file locations. Update README.md with organized documentation structure. Fix image paths in development.md to use correct relative paths. * docs: add numeric prefixes to directories and files for navigation order Add numeric prefixes (01-08) to documentation directories to indicate reading order and flow for first-time users: - 01-getting-started: Quick start guides - 02-setup: Setup and configuration - 03-production: Production deployment - 04-operations: Site operations - 05-development: Development guides - 06-migration: Migration guides - 07-troubleshooting: Troubleshooting - 08-reference: Reference documentation Add numeric prefixes to files within directories to guide readers through documentation in a logical sequence. Update all cross-references throughout documentation to use new numbered paths. Update README.md to reflect the new structure. * 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/. * docs: remove container-setup subfolder and flatten structure Move all files from docs/02-setup/container-setup/ directly into docs/02-setup/ to eliminate unnecessary subfolder. Files are already numbered sequentially, so they work perfectly at the same level. Changes: - Move all files from container-setup/ subfolder to 02-setup/ root - Remove container-setup/ subfolder - Update all cross-references: - Update README.md paths (remove container-setup/ from all links) - Fix references in site-operations.md - Fix references in migration docs - Update internal references in 06-setup-examples.md - Fix relative path references in 01-overview.md, 02-build-setup.md, 03-start-setup.md Result: Cleaner, flatter structure with all numbered setup files at the same level, making navigation more straightforward. * fix: Pre-commit failure is fixed --------- Co-authored-by: adithya <adithya.a@bayesian.in>
123 lines
4.8 KiB
Markdown
123 lines
4.8 KiB
Markdown
This guide walks you through building Frappe images from the repository resources.
|
|
|
|
# Prerequisites
|
|
|
|
- git
|
|
- docker or podman
|
|
- docker compose v2 or podman compose
|
|
|
|
> Install containerization software according to the official maintainer documentation. Avoid package managers when not recommended, as they frequently cause compatibility issues.
|
|
|
|
# Clone this repo
|
|
|
|
```bash
|
|
git clone https://github.com/frappe/frappe_docker
|
|
cd frappe_docker
|
|
```
|
|
|
|
# Define custom apps
|
|
|
|
If you dont want to install specific apps to the image skip this section.
|
|
|
|
To include custom apps in your image, create an `apps.json` file in the repository root:
|
|
|
|
```json
|
|
[
|
|
{
|
|
"url": "https://github.com/frappe/erpnext",
|
|
"branch": "version-15"
|
|
},
|
|
{
|
|
"url": "https://github.com/frappe/hrms",
|
|
"branch": "version-15"
|
|
},
|
|
{
|
|
"url": "https://github.com/frappe/helpdesk",
|
|
"branch": "main"
|
|
}
|
|
]
|
|
```
|
|
|
|
Then generate a base64-encoded string from this file:
|
|
|
|
```bash
|
|
export APPS_JSON_BASE64=$(base64 -w 0 apps.json)
|
|
```
|
|
|
|
# Build the image
|
|
|
|
Choose the appropriate build command based on your container runtime and desired image type. This example builds the `layered` image with the custom `apps.json` you created.
|
|
|
|
`Docker`:
|
|
|
|
```bash
|
|
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=custom:15 \
|
|
--file=images/layered/Containerfile .
|
|
```
|
|
|
|
`Podman`:
|
|
|
|
```bash
|
|
podman 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=custom:15 \
|
|
--file=images/layered/Containerfile .
|
|
```
|
|
|
|
## Build args
|
|
|
|
| Arg | Purpose |
|
|
| -------------------- | --------------------------------------------------------------------------------------------- |
|
|
| **Frappe Framework** | |
|
|
| FRAPPE_PATH | Repository URL for Frappe framework source code. Defaults to https://github.com/frappe/frappe |
|
|
| FRAPPE_BRANCH | Branch to use for Frappe framework. Defaults to version-15 |
|
|
| **Custom Apps** | |
|
|
| APPS_JSON_BASE64 | Base64-encoded JSON string from apps.json defining apps to install |
|
|
| **Dependencies** | |
|
|
| PYTHON_VERSION | Python version for the base image |
|
|
| NODE_VERSION | Node.js version |
|
|
| WKHTMLTOPDF_VERSION | wkhtmltopdf version |
|
|
| **bench only** | |
|
|
| DEBIAN_BASE | Debian base version for the bench image, defaults to `bookworm` |
|
|
| WKHTMLTOPDF_DISTRO | use the specified distro for debian package. Default is `bookworm` |
|
|
|
|
# env file
|
|
|
|
The compose file requires several environment variables. You can either export them on your system or create a `.env` file.
|
|
|
|
```bash
|
|
cp example.env custom.env
|
|
```
|
|
|
|
Edit `custom.env` to customize variables for your setup. The template includes common variables, but you can add, modify, or remove any as needed. See [env-variables.md](04-env-variables.md) for detailed descriptions of all available variables.
|
|
|
|
# Creating the final compose file
|
|
|
|
Combine the base compose file with appropriate overrides for your use case. This example adds MariaDB, Redis, and exposes ports on `:8080`:
|
|
|
|
```bash
|
|
docker compose --env-file example.env \
|
|
-f compose.yaml \
|
|
-f overrides/compose.mariadb.yaml \
|
|
-f overrides/compose.redis.yaml \
|
|
-f overrides/compose.noproxy.yaml \
|
|
config > compose.custom.yaml
|
|
```
|
|
|
|
This generates `compose.custom.yaml`, which you'll use to start all containers. Customize the overrides and environment variables according to your requirements.
|
|
|
|
> **NOTE**: podman compose is just a wrapper, it uses docker-compose if it is available or podman-compose if not. podman-compose have an issue reading .env files ([Issue](https://github.com/containers/podman-compose/issues/475)) and might create an issue when running the containers.
|
|
|
|
---
|
|
|
|
**Next:** [Start Setup →](03-start-setup.md)
|
|
|
|
**Back:** [Container Overview ←](01-overview.md)
|
|
|
|
**See also:** [Setup Examples](06-setup-examples.md) for practical deployment scenarios.
|