mirror of
https://github.com/kevingruesser/bootstrap-vz.git
synced 2025-08-22 18:00:35 +00:00
docker: Fix dockerfile creation
This commit is contained in:
parent
0d54ad68ec
commit
49ddd3879f
4 changed files with 19 additions and 14 deletions
|
@ -26,8 +26,8 @@ Name
|
|||
Provider
|
||||
~~~~~~~~
|
||||
|
||||
- ``dockerfile``: Inline dockerfile that should be appended to
|
||||
the one created by the bootstrapper.
|
||||
- ``dockerfile``: List of Dockerfile instructions that should be appended to
|
||||
the ones created by the bootstrapper.
|
||||
``optional``
|
||||
|
||||
- ``labels``: Labels that should be added to the dockerfile.
|
||||
|
@ -49,8 +49,8 @@ Example:
|
|||
name: bootstrap-vz:latest
|
||||
provider:
|
||||
name: docker
|
||||
dockerfile: >
|
||||
CMD /bin/bash
|
||||
dockerfile:
|
||||
- CMD /bin/bash
|
||||
labels:
|
||||
name: debian-{system.release}-{system.architecture}-{%y}{%m}{%d}
|
||||
description: Debian {system.release} {system.architecture}
|
||||
|
|
|
@ -20,7 +20,11 @@ properties:
|
|||
patternProperties:
|
||||
^.+$: {type: string}
|
||||
dockerfile:
|
||||
type: string
|
||||
type: array
|
||||
items:
|
||||
# https://github.com/turtlebender/docker/blob/6e2662b3bad319679e17fe25d410f246820ab0e9/builder/job.go#L27
|
||||
type: string
|
||||
pattern: '^(ENTRYPOINT|CMD|USER|WORKDIR|ENV|VOLUME|EXPOSE|ONBUILD|LABEL|MAINTAINER)'
|
||||
system:
|
||||
type: object
|
||||
properties:
|
||||
|
|
|
@ -9,7 +9,7 @@ class CreateDockerfileEntry(Task):
|
|||
|
||||
@classmethod
|
||||
def run(cls, info):
|
||||
info._docker['dockerfile'] = ''
|
||||
info._docker['dockerfile'] = []
|
||||
|
||||
|
||||
class CreateImage(Task):
|
||||
|
@ -21,8 +21,10 @@ class CreateImage(Task):
|
|||
from pipes import quote
|
||||
tar_cmd = ['tar', '--create', '--numeric-owner',
|
||||
'--directory', info.volume.path, '.']
|
||||
docker_cmd = ['docker', 'import', '--change', info._docker['dockerfile'], '-',
|
||||
info.manifest.name.format(**info.manifest_vars)]
|
||||
docker_cmd = ['docker', 'import']
|
||||
for instruction in info._docker['dockerfile']:
|
||||
docker_cmd.extend(['--change', instruction])
|
||||
docker_cmd.extend(['-', info.manifest.name.format(**info.manifest_vars)])
|
||||
cmd = ' '.join(map(quote, tar_cmd)) + ' | ' + ' '.join(map(quote, docker_cmd))
|
||||
[info._docker['image_id']] = log_check_call([cmd], shell=True)
|
||||
|
||||
|
@ -55,9 +57,8 @@ class PopulateLabels(Task):
|
|||
value = value.replace('\n', '\\\n')
|
||||
value = '"' + value + '"'
|
||||
return value
|
||||
kv_pairs = [label + '=' + escape(value) for label, value in labels.items()]
|
||||
# Add some nice newlines and indentation
|
||||
info._docker['dockerfile'] += 'LABEL ' + ' \\\n '.join(kv_pairs) + '\n'
|
||||
for label, value in labels.items():
|
||||
info._docker['dockerfile'].append('LABEL {}={}'.format(label, escape(value)))
|
||||
|
||||
|
||||
class AppendManifestDockerfile(Task):
|
||||
|
@ -68,4 +69,4 @@ class AppendManifestDockerfile(Task):
|
|||
|
||||
@classmethod
|
||||
def run(cls, info):
|
||||
info._docker['dockerfile'] += info.manifest.provider['dockerfile'] + '\n'
|
||||
info._docker['dockerfile'].extend(info.manifest.provider['dockerfile'])
|
||||
|
|
|
@ -4,8 +4,8 @@ provider:
|
|||
name: docker
|
||||
labels:
|
||||
description: Debian {system.release} {system.architecture}
|
||||
dockerfile: >
|
||||
CMD /bin/bash
|
||||
dockerfile:
|
||||
- CMD /bin/bash
|
||||
bootstrapper:
|
||||
workspace: /target
|
||||
variant: minbase
|
||||
|
|
Loading…
Add table
Reference in a new issue