feat(docker): application build via docker #2037
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
This PR introduces a Docker-based local development environment for Gibbon Core. It modernizes the repository's tooling by providing a standardized containerized setup, eliminating "works on my machine" issues.
The setup is split into two modular configuration files:
docker-compose.yaml: The base configuration defining the core services (appanddb), networks, and volumes suitable for production-like builds.docker-compose.dev.yaml: A development override that exposes ports (e.g.,8080) and sets environment variables specifically for local testing.Motivation and Context
Currently, setting up a local Gibbon development environment requires manually configuring PHP, Apache, and MySQL, which can be error-prone and inconsistent across operating systems (macOS, Windows, Linux).
This change solves the following problems:
bcmath,intl,gd, etc.) required by Gibbon v31+.How Has This Been Tested?
I have tested these changes on macOS (Intel) using Docker Compose CLI and deployed to a production-like environment using Coolify.
Test Scenarios:
http://localhost:8080.appcontainer can successfully communicate with thedbcontainer using the hostnamedband default credentials.bcmath,gd,zip) are loaded and functional.How to Run (Instructions for Reviewers)
Option 1: Local Development (Recommended)
This command uses the override file to expose the app on port
8080.dbgibbon/gibbonpassOption 2: Production/Base Build
To test the standalone base configuration (no ports exposed to host by default, mimics production internal networking):
Shutdown:
To stop containers and remove volumes (resetting the database):
Screenshots
Local

VPS
Below is the configuration used to deploy this branch via Coolify. By pointing the setup wizard to the fork containing these Docker files, the platform automatically handled the build and deployment process without manual intervention.
Future Enhancements
Dynamic Extension Loading: Support for installing additional PHP extensions via build arguments or configuration files.
CI/CD Pipeline Integration: Automate the build and publication of the Docker image to a container registry (e.g., GHCR). This will allow users to pull a pre-built image rather than building from source locally.
Headless Provisioning: Enable full instance configuration via environment variables to bypass the web-based installation wizard, facilitating automated/unattended deployments.
I would appreciate your feedback on edge cases you perceive, particularly if I were to use this as a production build