Docker images created for the Trove diary-writing project
These images are intended to speed up and render more consistent the deployment of short programming tasks - such as running integration tests, or CI/CD steps - in different languages. They come pre-installed with:
- relevant language-specific packages where appropriate, and
- Dojo, a system for cleanly running ephemeral Docker containers
The images provided by this repository can be found on DockerHub:
-
trove-r-base, an R image with all packages required for Trove installed
-
trove-r-dojo, simply r-base with Dojo installed on top
-
trove-node-dojo, a node.js-capable image with Dojo
-
tex-dojo, a LaTeX image based on blang/latex with Dojo installed on top
-
trove-composite, a pair of combined images, tagged as
circleci-<hash>ordojo-<hash>, with most of the above installed in the following order:- [circleci-,dojo-]
Ras per trove-r-dojo - [circleci-,dojo-]
node.jsas per trove-node-base - [circleci-,dojo-]
ansible,terraformandawsas per composite-misc - [circleci-,
dojo-] Various CircleCI-recommended tools as per composite-circleci dojo
- [circleci-,
dojo-] Simply a fake binary which ignores the command - [
circleci-,dojo-] Standarddojoas per r-dojo
- [circleci-,dojo-]
terraformmodules as per composite-final, installed on both the above images
- [circleci-,dojo-]
This repository is for generating images. Full details on the process of generating, testing and deploying them can be found in the CircleCI workflow spec or GoCD pipeline spec). The main elements of these are:
To build local images:
make buildormake build-docker-<image name>
To verify locally built images:
make test-docker-<image name>
To retrieve updates to the list of R packages to pre-install:
make dependencies-get-updates
To commit updated package lists and docker image tags to the main Trove repository:
make dependencies-push-updates
terraform is somewhat picky when it comes to using plugins from the shared plugin cache. It is likely to be necessary to do the following in order to ensure these are used with an updated image:
- Build the image containing Terraform, e.g. with
make docker-build-composite - Delete the relevant
.terraform.lock.hclfile entirely - Comment out the
nullprovider section ofterraform.test.tf - Run
make test-docker-compositeto generate a.terraform.lock.hclwith hashes based on the Docker-installed plugin versions - Uncomment the
nullprovider section ofterraform.test.tf - (Optional) Run
make terraform-update-lockfileto generate other hashes.- These hashes are only relevant when running
terraformoutside this Docker image, e.g. in other projects
- These hashes are only relevant when running
- Copy the
.terraform.lock.hclfile - or any relevant provider portions of it - to any projects this Docker image is to be used for.