Consider scripted composition of Dockerfiles - Redmine #3395
Dockerfiles tend to support chained image builds well, but forked recipes start to develop a maintenance burden as scriptlets get duplicated. Docker images composed from several recipes are kludgey, at best.
As the Dockerfiles for GitLab Runner develop more parameters (compiler tool chain, MPI flavor, Python version), we should consider using a tool to script the composition of our Dockerfiles rather than manually maintaining flat files.
Prominent solutions
- The NVidia container-maker seems to work pretty well to support scripted composition of container recipes.
- Alternatively, Spack logic can be injected into a single simple Dockerfile logic or used to generate a Dockerfile (also ref #3177)
(from redmine: issue id 3395, created on 2020-02-24 by eirrgang)
- Relations:
- relates #3263 (closed)
- relates #3177 (closed)
- Changesets:
- Revision 3ba43a73 by Eric Irrgang on 2020-03-07T15:34:09Z:
Manage the list of image tags in Docker build script.
Supports flexibility in future handling of built images.
Refs #3395
Change-Id: I207911f190a57cbc4671777b5b92827aa6d3904a
- Revision 386b2947 by Eric Irrgang on 2020-03-07T15:34:27Z:
Manage the list of image tags in Docker build script.
Supports flexibility in future handling of built images.
Refs #3395
Change-Id: I207911f190a57cbc4671777b5b92827aa6d3904a
- Revision f8517ace by Eric Irrgang on 2020-03-09T16:19:04Z:
Free up Docker image tag namespace.
Allow tags to distinguish Docker images for different release
requirements. Free up the image tag namespace for granularly describing
image revisions (and create smaller image repositories) by using the
matrix slug as the image name. Tag images to indicate the supported
GROMACS branch.
Refs #3395
Change-Id: Idff95d031cd56a28545562862e78cd99902db620
- Revision 7bd5c7f7 by Eric Irrgang on 2020-03-10T11:29:28Z:
Distinguish Docker images for different release requirements.
Free up the image tag namespace for granularly describing image
revisions (and create smaller image repositories) by using the matrix
slug as the image name. Tag images with the major release number (2020).
Refs #3395
Change-Id: I917f511c8bc11c4cedf85943eb7388ce0d5f9740
- Revision 4f4fa0ae by Eric Irrgang on 2020-03-16T07:08:18Z:
Build MPI in Dockerfile.
We should make sure that the MPI compiler wrapper we
set up corresponds to the toolchain we expect to use
in a Docker image.
Refs #3395
Change-Id: I89e2af539199918153560483552b5245c6947acf
- Revision 3ea23bfb by Eric Irrgang on 2020-03-16T07:56:16Z:
Define an argparse parent parser for container image tools.
Refs #3395
Change-Id: I8bcb314b21732cb870743f44de6aadc4d6bf534d
- Revision a2142ff6 by Paul Bauer on 2020-03-19T08:33:21Z:
Add script to generate CI Docker files
Refs #3395
Change-Id: Id001c87b52f4d1f7afcb7fbb38cd4b5efdbfd90e
- Revision d26f554a by Paul Bauer on 2020-03-20T13:35:43Z:
Add script to generate CI Docker files
Refs #3395
Change-Id: Id001c87b52f4d1f7afcb7fbb38cd4b5efdbfd90e