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:
Sean Mooney 2017-05-19 00:20:41 +00:00
parent c2c457c282
commit 79a2342395
3 changed files with 24 additions and 1 deletions

View File

@ -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'),

View File

@ -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)

View File

@ -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