[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]
Re: [atomic-devel] 3 kinds of "docker build"
- From: Colin Walters <walters verbum org>
- To: Ben Parees <bparees redhat com>, Cesar Wong <cewong redhat com>
- Cc: atomic-devel projectatomic io
- Subject: Re: [atomic-devel] 3 kinds of "docker build"
- Date: Thu, 16 Oct 2014 09:10:07 -0400
One thing I find strange about STI myself is that the unit of
interaction is the Docker image, and the source code is an external
thing you supply.
To me, Docker images are *caches* of source code built in a specific
configuration. Source code is git repositories, pinned to specific
revisions.
I think source code (+ build configuration) should be the focus, or unit
of interaction. Most packaging systems I've seen are also wrong in this
- they has an obsessive focus on the metadata, the actual source code is
just a Source0: line, squirrelled away in the lookaside cache or
similar.
While I understand the rationale behind STI's focus on the
build-one-thing, a case I was hitting is this:
I have two Docker images (apps I'm working on), with a common set of
packages shared between them, both deriving from a well-known framework
(base image). The common set here might include say a configuration or
utility library I wrote. If I'm working on one of my apps and fix
something in the utility library, I want to potentially rebuild/retest
both images.
Here's a real-world example:
https://github.com/stackforge/kolla/blob/master/docker/fedora-rdo-base/Dockerfile
Now that Docker file is just an *assembly*, whereas I as an app author
will want to build from source. Say the author of Glance also needs to
update "python-jsonpatch" (to pick a random example). Clearly in the
glance Dockerfile they could test this by just doing a yum install of
their custom RPM, but I think a more intelligent build system would be
capable of building the python-jsonpatch from *source*, in addition to
taking a custom RPM.
I think this is a quite reasonable real-world scenario that also
highlights the full complexity of the kind of build system I think we
need. The system could build python-jsonpatch as a standalone RPM, then
be capable of efficiently injecting that updated RPM into derived
images.
[Date Prev][Date Next] [Thread Prev][Thread Next]
[Thread Index]
[Date Index]
[Author Index]