Taqasta uses gomplate to generate the Dockerfile and Composer config from templates and values.yml.
| File | Role |
|---|---|
| values.yml | Extensions, skins, Composer packages, repositories, patches |
| values.schema.json | JSON Schema for validating values.yml |
| Dockerfile.tmpl | Main Dockerfile template |
| templates/ | Per-stage Dockerfile partials (base, core, extensions, skins, composer, …) |
| _sources/configs/composer.wikiteq.json.tmpl | Composer merge config template |
| .gomplate.yml | Gomplate inputs and values.yml datasource |
| compile.sh | Generates Dockerfile and _sources/configs/composer.wikiteq.json |
| validate.sh | Validates values.yml against the schema (via Docker + ajv) |
| build.sh | Runs a local multi-platform Docker image build with buildx |
Generated artifacts (Dockerfile, _sources/configs/composer.wikiteq.json) are gitignored. CI runs validate.sh and compile.sh before every build.
- Edit values.yml (and templates if needed).
- Run
./validate.shto check YAML against the schema. - Run
./compile.shto generate the Dockerfile and Composer files. - Build locally with
./build.shor open a PR and let GitHub Actions build the image.
On Windows with Git Bash, if path conversion breaks these scripts, set MSYS_NO_PATHCONV=1 before running ./validate.sh, ./compile.sh, or ./build.sh.
Non-bundled extensions from values.yml are grouped into Docker stages of 30 extensions each (templates/extensions.Dockerfile). Stages are combined in the composer stage, where extension patches are applied.
Reordering extensions in values.yml can invalidate stage caches because stage boundaries follow list order. Prefer appending new extensions at the end when possible.
Field definitions for extension entries (repository, branch, commit, bundled, additional steps, Wikidata ID, etc.) are documented in values.schema.json.