61 lines
1.6 KiB
Markdown
61 lines
1.6 KiB
Markdown
# Developing
|
|
|
|
The Dockerfile itself is constructed from re-usable snippets,
|
|
located in the templates/ directory, and can be regenerated
|
|
by running:
|
|
|
|
```bash
|
|
scripts/build-dockerfile
|
|
```
|
|
|
|
The above script uses environment substitution to stamp version
|
|
information within the created Dockerfile. The files which declare
|
|
the environment variables are in **SOLUTION** and **MANIFEST**.
|
|
|
|
After joining the template/* pieces together, the file
|
|
**Dockerfile.solution** is then added to the Dockerfile with
|
|
environment substitution.
|
|
|
|
|
|
# SOLUTION
|
|
|
|
Solution specific definitions:
|
|
|
|
CONTAINER_IMAGE is used as the container tag name
|
|
OS_DISTRO is used as the base OS distribution. Possible values: ubuntu
|
|
OS_RELEASE is used as the OS version. Possible values: disco, eoan
|
|
|
|
|
|
# MANIFEST
|
|
|
|
The version of MANIFEST is created by the set of Agama packages from the Agama
|
|
repository and name-mangling them to be a VERSION declaration:
|
|
|
|
For example:
|
|
|
|
libgl1-mesa-glx_19.0.1-agama-109_amd64.deb
|
|
|
|
is changed to:
|
|
|
|
LIBGL1_MESA_GLX_VERSION=19.0.1-agama-109
|
|
|
|
This allows the Dockerfile templates version pin Agama packages:
|
|
|
|
```Dockerfile
|
|
RUN apt-get install -y libgl1-mesa-glx=$LIBGL1_MESA_GLX_VERSION
|
|
```
|
|
|
|
The `scripts/build-dockerfile` loads MANIFEST, which defines
|
|
LIBGL1_MESA_GLX_VERSION. That is then subsituted for the version in
|
|
the above Dockerfile snippet when being placed into the main Dockerfile.
|
|
|
|
# Tagging
|
|
|
|
If the build succeeds, we want to be able to tag the git project
|
|
as well as corresponding Docker images with the appropriate Agama
|
|
tag:
|
|
|
|
```bash
|
|
. MANIFEST ; git tag -f agama-${AGAMA_VERSION}
|
|
```
|