lib/dockdev/image.rb in dockdev-0.3.8 vs lib/dockdev/image.rb in dockdev-0.4.0

- old
+ new

@@ -1,12 +1,8 @@ require 'docker/cli' -require 'securerandom' - -require_relative 'user_info' - module Dockdev class Image include TR::CondUtils def initialize(name) @@ -22,113 +18,34 @@ raise Error, "Error triggered during find existing image : #{res.err_stream}" end end def new_container(cont_name, opts = {}) - optss = { interactive: true, tty: true, - container_name: cont_name, - match_user: TR::RTUtils.on_linux? + container_name: cont_name } optss.merge!(opts) - @cmd_fact.create_container_from_image(@image_name, optss).run - end def build(dockerfile, opts = {}) - - dockerfilePath = dockerfile - if is_transfer_user?(opts) - cont = append_transfer_user_in_dockerfile(dockerfile) - dockerfilePath = generated_dockerfile - File.open(dockerfilePath, "w") do |f| - f.write cont - end - end - optss = { context_root: opts[:root], - dockerfile: dockerfilePath + dockerfile: dockerfile } optss.merge!(opts) @cmd_fact.build_image(@image_name, optss).run - - FileUtils.rm(generated_dockerfile) if File.exist?(generated_dockerfile) and not is_keep_generated_dockerfile? - end def destroy res = @cmd_fact.delete_image(@image_name).run if res.success? not res.is_out_stream_empty? else raise Error, "Error triggered during deleting image : #{res.err_stream}" end - end - - - private - def logger - Dockdev.logger(:dockdev_image) - end - - def is_keep_generated_dockerfile? - v = ENV["DOCKDEV_KEEP_GENERATED_DOCKERFILE"] - is_empty?(v) ? false : (v.downcase == "true") ? true : false - end - - def generated_dockerfile - "Dockerfile-dockdev" - end - - def is_transfer_user?(opts = {}) - if TR::RTUtils.on_linux? - true - else - (opts[:match_user].nil? || not_bool?(opts[:match_user])) ? false : opts[:match_user] - end - end - - def append_transfer_user_in_dockerfile(file) - if File.exist?(file) - logger.debug "Append transfer user in dockerfile '#{file}'" - res = [] - cont = File.read(file) - indx = cont =~ /CMD/ - if indx != nil - - res << cont[0...indx] - res << transfer_user_command - res << cont[indx..-1] - - else - - res << cont - res << transfer_user_command - - end - - res.join - - else - "" - end - end - - def transfer_user_command - - ui = UserInfo.user_info - gi = UserInfo.group_info - - res = [] - res << "RUN apt-get update && apt-get install -y sudo" - res << "RUN groupadd -f -g #{gi[:gid]} #{gi[:group_name]} && useradd -u #{ui[:uid]} -g #{gi[:gid]} -m #{ui[:login]} && usermod -aG sudo #{ui[:login]} && echo '#{ui[:login]} ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers" - res << "USER #{ui[:login]}" - res.join("\n") - end end end