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
|
Provider
|
||||||
~~~~~~~~
|
~~~~~~~~
|
||||||
|
|
||||||
- ``dockerfile``: Inline dockerfile that should be appended to
|
- ``dockerfile``: List of Dockerfile instructions that should be appended to
|
||||||
the one created by the bootstrapper.
|
the ones created by the bootstrapper.
|
||||||
``optional``
|
``optional``
|
||||||
|
|
||||||
- ``labels``: Labels that should be added to the dockerfile.
|
- ``labels``: Labels that should be added to the dockerfile.
|
||||||
|
@ -49,8 +49,8 @@ Example:
|
||||||
name: bootstrap-vz:latest
|
name: bootstrap-vz:latest
|
||||||
provider:
|
provider:
|
||||||
name: docker
|
name: docker
|
||||||
dockerfile: >
|
dockerfile:
|
||||||
CMD /bin/bash
|
- CMD /bin/bash
|
||||||
labels:
|
labels:
|
||||||
name: debian-{system.release}-{system.architecture}-{%y}{%m}{%d}
|
name: debian-{system.release}-{system.architecture}-{%y}{%m}{%d}
|
||||||
description: Debian {system.release} {system.architecture}
|
description: Debian {system.release} {system.architecture}
|
||||||
|
|
|
@ -20,7 +20,11 @@ properties:
|
||||||
patternProperties:
|
patternProperties:
|
||||||
^.+$: {type: string}
|
^.+$: {type: string}
|
||||||
dockerfile:
|
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:
|
system:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|
|
@ -9,7 +9,7 @@ class CreateDockerfileEntry(Task):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def run(cls, info):
|
def run(cls, info):
|
||||||
info._docker['dockerfile'] = ''
|
info._docker['dockerfile'] = []
|
||||||
|
|
||||||
|
|
||||||
class CreateImage(Task):
|
class CreateImage(Task):
|
||||||
|
@ -21,8 +21,10 @@ class CreateImage(Task):
|
||||||
from pipes import quote
|
from pipes import quote
|
||||||
tar_cmd = ['tar', '--create', '--numeric-owner',
|
tar_cmd = ['tar', '--create', '--numeric-owner',
|
||||||
'--directory', info.volume.path, '.']
|
'--directory', info.volume.path, '.']
|
||||||
docker_cmd = ['docker', 'import', '--change', info._docker['dockerfile'], '-',
|
docker_cmd = ['docker', 'import']
|
||||||
info.manifest.name.format(**info.manifest_vars)]
|
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))
|
cmd = ' '.join(map(quote, tar_cmd)) + ' | ' + ' '.join(map(quote, docker_cmd))
|
||||||
[info._docker['image_id']] = log_check_call([cmd], shell=True)
|
[info._docker['image_id']] = log_check_call([cmd], shell=True)
|
||||||
|
|
||||||
|
@ -55,9 +57,8 @@ class PopulateLabels(Task):
|
||||||
value = value.replace('\n', '\\\n')
|
value = value.replace('\n', '\\\n')
|
||||||
value = '"' + value + '"'
|
value = '"' + value + '"'
|
||||||
return value
|
return value
|
||||||
kv_pairs = [label + '=' + escape(value) for label, value in labels.items()]
|
for label, value in labels.items():
|
||||||
# Add some nice newlines and indentation
|
info._docker['dockerfile'].append('LABEL {}={}'.format(label, escape(value)))
|
||||||
info._docker['dockerfile'] += 'LABEL ' + ' \\\n '.join(kv_pairs) + '\n'
|
|
||||||
|
|
||||||
|
|
||||||
class AppendManifestDockerfile(Task):
|
class AppendManifestDockerfile(Task):
|
||||||
|
@ -68,4 +69,4 @@ class AppendManifestDockerfile(Task):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def run(cls, info):
|
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
|
name: docker
|
||||||
labels:
|
labels:
|
||||||
description: Debian {system.release} {system.architecture}
|
description: Debian {system.release} {system.architecture}
|
||||||
dockerfile: >
|
dockerfile:
|
||||||
CMD /bin/bash
|
- CMD /bin/bash
|
||||||
bootstrapper:
|
bootstrapper:
|
||||||
workspace: /target
|
workspace: /target
|
||||||
variant: minbase
|
variant: minbase
|
||||||
|
|
Loading…
Add table
Reference in a new issue