enable the kolla build system to use out of tree docker files
- This change introduces a docker-dir config option to enable specifying an out of tree additional docker file root dir for use with kolla build. - This change allows kolla's build system to be reused by non kolla or external project to build arbitrary docker images using jinja2 templatized docker files. Co-Authored-By: Michal (inc0) Jastrzebski <inc007@gmail.com> Change-Id: Idbba02a8910866ef1b838e5cbac3ab230551b7e5
This commit is contained in:
parent
c2c457c282
commit
79a2342395
@ -246,6 +246,9 @@ _CLI_OPTS = [
|
||||
help='Time in seconds after which any operation times out'),
|
||||
cfg.MultiOpt('template-override', types.String(),
|
||||
help='Path to template override file'),
|
||||
cfg.MultiOpt('docker-dir', types.String(),
|
||||
help='Path to additional docker file template directory',
|
||||
short='D', default=[]),
|
||||
cfg.StrOpt('logs-dir', help='Path to logs directory'),
|
||||
cfg.BoolOpt('pull', default=True,
|
||||
help='Attempt to pull a newer version of the base image'),
|
||||
|
@ -643,6 +643,18 @@ class KollaWorker(object):
|
||||
os.path.join(self.working_dir, "base", "apt_preferences")
|
||||
)
|
||||
|
||||
def copy_dir(self, src, dest):
|
||||
if not os.path.isdir(dest):
|
||||
shutil.copytree(src, dest)
|
||||
else:
|
||||
for file in os.listdir(src):
|
||||
src_path = os.path.join(src, file)
|
||||
dest_path = os.path.join(dest, file)
|
||||
if os.path.isdir(src_path):
|
||||
self.copy_dir(src_path, dest_path)
|
||||
else:
|
||||
shutil.copy2(src_path, dest_path)
|
||||
|
||||
def setup_working_dir(self):
|
||||
"""Creates a working directory for use while building."""
|
||||
if self.conf.work_dir:
|
||||
@ -653,7 +665,9 @@ class KollaWorker(object):
|
||||
'%Y-%m-%d_%H-%M-%S_')
|
||||
self.temp_dir = tempfile.mkdtemp(prefix='kolla-' + ts)
|
||||
self.working_dir = os.path.join(self.temp_dir, 'docker')
|
||||
shutil.copytree(self.images_dir, self.working_dir)
|
||||
self.copy_dir(self.images_dir, self.working_dir)
|
||||
for dir in self.conf.docker_dir:
|
||||
self.copy_dir(dir, self.working_dir)
|
||||
self.copy_apt_files()
|
||||
LOG.debug('Created working dir: %s', self.working_dir)
|
||||
|
||||
|
@ -0,0 +1,6 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
Kolla now supports additional dockerfile directory building if they
|
||||
follow Kolla template standard. To add custom docker directory run
|
||||
kolla-build --docker-dir /path/to/custom/dockerfiles
|
Loading…
Reference in New Issue
Block a user