Пример #1
0
    def BuildLayer(self):
        """Override."""
        with ftl_util.Timing('Building app layer'):
            buf = cStringIO.StringIO()
            logging.info('Starting to generate app layer \
                tarfile from context...')
            with tarfile.open(fileobj=buf, mode='w') as out:
                for name in self._ctx.ListFiles():
                    content = self._ctx.GetFile(name)
                    info = tarfile.TarInfo(
                        os.path.join(self._destination_path.strip("/"), name))
                    info.size = len(content)
                    out.addfile(info, fileobj=cStringIO.StringIO(content))
            logging.info('Finished generating app layer tarfile from context.')

            tar = buf.getvalue()

            logging.info('Starting to gzip app layer tarfile...')
            gzip_process = subprocess.Popen(['gzip', '-f'],
                                            stdout=subprocess.PIPE,
                                            stdin=subprocess.PIPE,
                                            stderr=subprocess.PIPE)
            gz = gzip_process.communicate(input=tar)[0]
            overrides_dct = {
                'created': str(datetime.date.today()) + 'T00:00:00Z'
            }
            if self._entrypoint:
                overrides_dct['Entrypoint'] = self._entrypoint
            if self._exposed_ports:
                overrides_dct['ExposedPorts'] = self._exposed_ports
            if self._exposed_ports:
                overrides_dct['ExposedPorts'] = self._exposed_ports
            logging.info('Finished gzipping tarfile.')
            self._img = tar_to_dockerimage.FromFSImage([gz], [tar],
                                                       overrides_dct)
Пример #2
0
 def _build_layer(self):
     if self._should_use_yarn:
         blob, u_blob = self._gen_yarn_install_tar(self._directory)
     else:
         blob, u_blob = self._gen_npm_install_tar(self._directory)
     self._img = tar_to_dockerimage.FromFSImage(
         [blob], [u_blob], ftl_util.generate_overrides(False))
Пример #3
0
 def BuildLayer(self):
     """Override."""
     blob, u_blob = self._gen_composer_install_tar(self._pkg_descriptor,
                                                   self._destination_path)
     overrides_dct = {'created': str(datetime.date.today()) + "T00:00:00Z"}
     self._img = tar_to_dockerimage.FromFSImage([blob], [u_blob],
                                                overrides_dct)
Пример #4
0
    def _build_layer(self):
        python_util.setup_venv(self._venv_dir, self._venv_cmd,
                               self._python_cmd)

        blob, u_blob = ftl_util.zip_dir_to_layer_sha(self._venv_dir,
                                                     self._venv_dir)

        overrides = ftl_util.generate_overrides(True, self._venv_dir)
        self._img = tar_to_dockerimage.FromFSImage([blob], [u_blob], overrides)
Пример #5
0
    def _build_layer(self):
        self._setup_venv()

        tar_path = tempfile.mktemp(suffix='.tar')
        tar_cmd = ['tar', '-cf', tar_path, self._venv_dir]
        ftl_util.run_command('tar_venv_interpreter', tar_cmd)

        u_blob = open(tar_path, 'r').read()
        # We use gzip for performance instead of python's zip.
        gzip_cmd = ['gzip', tar_path, '-1']
        ftl_util.run_command('gzip_venv_interpreter', gzip_cmd)

        blob = open(os.path.join(tar_path + '.gz'), 'rb').read()

        overrides = ftl_util.generate_overrides(True, self._venv_dir)
        self._img = tar_to_dockerimage.FromFSImage([blob], [u_blob], overrides)
Пример #6
0
    def BuildLayer(self):
        """Override."""
        with ftl_util.Timing('Building app layer'):
            gz, tar = ftl_util.zip_dir_to_layer_sha(self._directory,
                                                    self._destination_path)

            overrides_dct = {
                'created': str(datetime.date.today()) + 'T00:00:00Z'
            }
            if self._entrypoint:
                overrides_dct['Entrypoint'] = self._entrypoint
            if self._exposed_ports:
                overrides_dct['ExposedPorts'] = self._exposed_ports
            if self._exposed_ports:
                overrides_dct['ExposedPorts'] = self._exposed_ports
            logging.info('Finished gzipping tarfile.')
            self._img = tar_to_dockerimage.FromFSImage([gz], [tar],
                                                       overrides_dct)
Пример #7
0
 def BuildLayer(self):
     cached_img = None
     if self._cache:
         with ftl_util.Timing('checking_cached_pipfile_pkg_layer'):
             key = self.GetCacheKey()
             cached_img = self._cache.Get(key)
             self._log_cache_result(False if cached_img is None else True)
     if cached_img:
         self.SetImage(cached_img)
     else:
         self._pip_download_wheels(' '.join(self._pkg_descriptor))
         whls = self._resolve_whls()
         if len(whls) != 1:
             raise Exception("expected one whl for one installed pkg")
         pkg_dir = self._whl_to_fslayer(whls[0])
         blob, u_blob = ftl_util.zip_dir_to_layer_sha(pkg_dir, "")
         overrides = ftl_util.generate_overrides(False, self._venv_dir)
         self._img = tar_to_dockerimage.FromFSImage([blob], [u_blob],
                                                    overrides)
         if self._cache:
             with ftl_util.Timing('uploading_pipfile_pkg_layer'):
                 self._cache.Set(self.GetCacheKey(), self.GetImage())
Пример #8
0
 def _build_layer(self):
     blob, u_blob = self._gen_composer_install_tar(self._directory,
                                                   self._destination_path)
     self._img = tar_to_dockerimage.FromFSImage(
         [blob], [u_blob], ftl_util.generate_overrides(False))
Пример #9
0
 def _build_layer(self):
     blob, u_blob = self._gen_composer_install_tar(self._destination_path)
     overrides_dct = {'created': str(datetime.date.today()) + 'T00:00:00Z'}
     self._img = tar_to_dockerimage.FromFSImage([blob], [u_blob],
                                                overrides_dct)
Пример #10
0
 def BuildLayer(self):
     """Override."""
     blob, u_blob = self._gen_npm_install_tar(self._pkg_descriptor,
                                              self._destination_path)
     self._img = tar_to_dockerimage.FromFSImage([blob], [u_blob],
                                                self._generate_overrides())
 def BuildLayer(self):
     self._setup_venv(self._python_version)
     blob, u_blob = ftl_util.zip_dir_to_layer_sha(
         os.path.abspath(os.path.join(self._venv_dir, os.pardir)))
     self._img = tar_to_dockerimage.FromFSImage(
         [blob], [u_blob], _generate_overrides(True))
 def BuildLayer(self):
     blob, u_blob = ftl_util.zip_dir_to_layer_sha(self._pkg_dir)
     self._img = tar_to_dockerimage.FromFSImage(
         [blob], [u_blob], _generate_overrides(False))
Пример #13
0
 def _build_layer(self):
     blob, u_blob = self._gen_npm_install_tar(self._pkg_descriptor,
                                              self._directory)
     self._img = tar_to_dockerimage.FromFSImage([blob], [u_blob],
                                                self._generate_overrides())
Пример #14
0
 def _build_layer(self):
     blob, u_blob = ftl_util.zip_dir_to_layer_sha(self._pkg_dir, "")
     overrides = ftl_util.generate_overrides(False)
     self._img = tar_to_dockerimage.FromFSImage([blob], [u_blob], overrides)