Developer documentation for GAIA Docker project.
- Docker and Docker Compose installed
- Python 3.12+ and uv installed (for running tests)
Quick test:
uv sync
uv run pytest tests/ -vFull testing guide:
-
Unit Tests (no container required):
uv run pytest tests/test_dockerfile.py tests/test_entrypoint.py -v
-
Integration Tests (requires container):
uv run pytest tests/test_container.py -v -m integration
-
All Tests:
uv run pytest tests/ -v
Container versions are defined in the VERSION.json file in the repository root. This JSON file contains independent version numbers for each container type.
- Update
VERSION.jsonfile with the new version(s):{ "gaia-linux": "0.15.3.1", "gaia-dev": "1.0.0" } - Create a pull request with the version change
- CI will automatically:
- Read versions from
VERSION.jsonusing jq - Build Docker images with their respective GAIA versions
- Tag images with versions (e.g.,
itomek/gaia-linux:0.15.2,itomek/gaia-dev:1.0.0) - Publish to Docker Hub
- Read versions from
The VERSION.json file should contain a JSON object with version numbers for each container:
{
"gaia-linux": "0.15.3.1",
"gaia-dev": "1.0.0"
}- gaia-linux: Should match the PyPI
amd-gaiapackage version - gaia-dev: Independent versioning for development container features
Important: We only publish specific version tags (no latest tag). Each version is explicitly tagged.
- DOCKERHUB_USERNAME - Your Docker Hub username
- DOCKERHUB_TOKEN - Docker Hub access token (create at https://hub.docker.com/settings/security)
The image publishes automatically when:
- You push to
mainbranch (ifVERSIONfile changed) - You create a pull request that updates
VERSION
The CI workflow:
- Reads
VERSION.jsonfile using jq - Builds images with
GAIA_VERSIONbuild args set to their respective versions - Tags images as
itomek/gaia-linux:<version>anditomek/gaia-dev:<version> - Pushes to Docker Hub
Note: We only publish specific version tags (no latest tag). Each version is explicitly tagged.
- Docker and Docker Compose installed and running
- Python 3.12+ and uv installed
- Test dependencies installed:
uv sync
docker run -dit \
--name gaia-linux-test \
-e LEMONADE_BASE_URL=http://localhost:5000/api/v1 \
itomek/gaia-linux:0.15.3.1
docker logs -f gaia-linux-test
# Wait for "Ready for development"
docker exec -it gaia-linux-test zsh -c "gaia --version"
docker stop gaia-linux-test && docker rm gaia-linux-testUnit Tests (no container required):
uv run pytest tests/test_dockerfile.py tests/test_entrypoint.py -vIntegration Tests (requires container):
uv run pytest tests/test_container.py -v -m integrationAll Tests:
uv run pytest tests/ -vTests run automatically in GitHub Actions on pull requests and pushes to main.
- Follow existing code style
- Run tests before submitting PRs
- Update documentation if needed