Project Description
Writing container definition files is boring and error-prone: let's use power of a programming language to generate containers!
Project purpose:
- Experiment about container creation workflow and container management/publishing/versioning
- Play with a new non-mainstream programming language and show off capabilities/ease of usage. Ideally I plan to use nim, if time permits also experiment with others
- Follow Test-Driven Development (TDD) practices
- Have fun
Advantages:
- all features of a proper language: variables, multiline strings, logic statements, loops, code reuse.
- static syntax checking, no more typos or duplicate entries
- generate many docker files from one template [testing, production, ... ]
- generate sequence [Dockerfile.suse => Dockerfile.python => Dockerfile.yourapp, ...]
- could generate command line snippets or CI build scripts with the same data
- optimize container image creation removing redundant layers
Goal for this Hackweek
Preliminary study and make a proof of concept on a github repo with some working examples
Resources
- https://github.com/jen-soft/pydocker
- https://github.com/dahernan/godockerize
- https://www.mankier.com/5/Containerfile
Further ideas
- secret scan to avoid API key/tokens leaks
- optional "runtime" checking
- extend for multi_stage, docker compose
- import existing Dockerfile
- sanitize / check for issues ("linting")
- iterate on generation by extending to YAML format: k8s manifests, github workflows ...
Looking for hackers with the skills:
This project is part of:
Hack Week 22
Activity
Comments
-
11 months ago by dancermak | Reply
We are currently generating the Dockerfiles for the BCI images via python: https://github.com/SUSE/BCI-dockerfile-generator/tree/main/src/bci_build This is probably not what you are looking for, as it's really just a wrapper around jinja2 templates, but maybe it can help you out a bit.
-
-
10 months ago by amanzini | Reply
published v0.1.0 on the NIM package directory: https://nimble.directory/pkg/containertools
Similar Projects
Forklift - Text based GUI utility for dealing with containers by andreabenini
[comment]: # (Please use the project descriptio...
A set of utilities to produce a "from scratch" OCI/Docker container using Opensuse/SLE rpms by ldragon
[comment]: # (Please use the project descriptio...
Serving web pages for a registered domain from a container behind proxy by tjyrinki_suse
Project description
For example Nginx pro...
A set of utilities to produce a "from scratch" OCI/Docker container using Opensuse/SLE rpms by ldragon
[comment]: # (Please use the project descriptio...
Forklift - Text based GUI utility for dealing with containers by andreabenini
[comment]: # (Please use the project descriptio...
Forklift - Text based GUI utility for dealing with containers by andreabenini
[comment]: # (Please use the project descriptio...
Predefined app security policy template for NeuVector by feih
Project Description
Idea is to predefin...
Building a container bootloader by flonnegren
[comment]: # (Please use the project descriptio...
Containerized home mirror by lkocman
I'm running a simple home mirror, but I managed...
A set of utilities to produce a "from scratch" OCI/Docker container using Opensuse/SLE rpms by ldragon
[comment]: # (Please use the project descriptio...