def docker_client(self): if "docker_client" not in info: info["docker_client"] = docker_context() return info["docker_client"]
def prepare(self, npm_deps, compiled_static_folder): ctxt = docker_context() harpoon_options = { "docker_context": ctxt , "no_intervention": True , "docker_context_maker": docker_context } self.harpoon = HarpoonSpec().harpoon_spec.normalise(Meta({}, []), harpoon_options) config_root = pkg_resources.resource_filename(__package__, "") deps = self.default_npm_deps() deps.update(npm_deps) image_name = "dashmat-jsx-builder" everything = MergedOptions(dont_prefix=[dictobj]) everything.update( { "harpoon": self.harpoon , "config_root": config_root , "images": { image_name: { "harpoon": self.harpoon , "configuration": everything , "volumes": { "mount": [ [ compiled_static_folder, "/compiled" ] ] } , "context": { "enabled" : False } , "persistence": { "action": "npm install && npm dedup" , "folders": ["/project/node_modules", "/usr/lib/node_modules"] } , "commands": [ "FROM gliderlabs/alpine:3.2" , "RUN apk-install bash nodejs" , "RUN npm install -g npm" , "RUN mkdir /project" , "WORKDIR /project" , [ "ADD" , { "dest": "/project/package.json" , "content": json.dumps( { "name": "dashmat" , "version": "0.1.0" , "dependencies": collections.OrderedDict(sorted(deps.items())) } , sort_keys=True ) , "mtime": mtime } ] ] } } } ) def convert_image(path, val): meta = Meta(everything, [(part, "") for part in path.path]) return HarpoonSpec().image_spec.normalise(meta, val) everything.add_converter(Converter(convert=convert_image, convert_path=["images", image_name])) everything.converters.activate() self.image = everything[["images", image_name]] Builder().make_image(self.image, {self.image.name: self.image})