Sha256: 8394f9f1f39fe0c23f752f19ea303fd806d18a8f034ffa1b437caab633f146d9

Contents?: true

Size: 1.61 KB

Versions: 16

Compression:

Stored size: 1.61 KB

Contents

# typed: strict

module Kuby
  module Docker
    class SetupPhase < Layer
      extend T::Sig

      DEFAULT_WORKING_DIR = T.let('/usr/src/app'.freeze, String)

      sig { returns(T.nilable(String)) }
      attr_reader :base_image

      sig { params(base_image: String).void }
      attr_writer :base_image

      sig { returns(T.nilable(String)) }
      attr_reader :working_dir

      sig { params(working_dir: String).void }
      attr_writer :working_dir

      sig { returns(T.nilable(String)) }
      attr_reader :rails_env

      sig { params(rails_env: String).void }
      attr_writer :rails_env

      sig { params(environment: Environment).void }
      def initialize(environment)
        super

        @base_image = T.let(@base_image, T.nilable(String))
        @working_dir = T.let(@working_dir, T.nilable(String))
        @rails_env = T.let(@rails_env, T.nilable(String))
      end

      sig { override.params(dockerfile: Dockerfile).void }
      def apply_to(dockerfile)
        dockerfile.from(base_image || default_base_image)
        dockerfile.workdir(working_dir || DEFAULT_WORKING_DIR)
        dockerfile.env("RAILS_ENV=#{rails_env || Kuby.env}")
        dockerfile.env("KUBY_ENV=#{Kuby.env}")
        dockerfile.arg('RAILS_MASTER_KEY')
      end

      private

      sig { returns(String) }
      def default_base_image
        case metadata.distro
          when :debian
            "ruby:#{RUBY_VERSION}"
          when :alpine
            "ruby:#{RUBY_VERSION}-alpine"
          else
            raise MissingDistroError, "distro '#{metadata.distro}' hasn't been registered"
        end
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
kuby-core-0.11.16 lib/kuby/docker/setup_phase.rb
kuby-core-0.11.15 lib/kuby/docker/setup_phase.rb
kuby-core-0.11.14 lib/kuby/docker/setup_phase.rb
kuby-core-0.11.13 lib/kuby/docker/setup_phase.rb
kuby-core-0.11.12 lib/kuby/docker/setup_phase.rb
kuby-core-0.11.11 lib/kuby/docker/setup_phase.rb
kuby-core-0.11.10 lib/kuby/docker/setup_phase.rb
kuby-core-0.11.9 lib/kuby/docker/setup_phase.rb
kuby-core-0.11.8 lib/kuby/docker/setup_phase.rb
kuby-core-0.11.7 lib/kuby/docker/setup_phase.rb
kuby-core-0.11.6 lib/kuby/docker/setup_phase.rb
kuby-core-0.11.4 lib/kuby/docker/setup_phase.rb
kuby-core-0.11.3 lib/kuby/docker/setup_phase.rb
kuby-core-0.11.2 lib/kuby/docker/setup_phase.rb
kuby-core-0.11.1 lib/kuby/docker/setup_phase.rb
kuby-core-0.11.0 lib/kuby/docker/setup_phase.rb