Sha256: 37ac580267088dda5c5161c40a5e42f5d02beda77f74ae135e5a90a5e5b01ded

Contents?: true

Size: 1.02 KB

Versions: 9

Compression:

Stored size: 1.02 KB

Contents

# frozen_string_literal: true

module Orchestration
  module DockerCompose
    class DatabaseService
      # We dictate which port all database services will run on in their
      # container to simplify port mapping.
      PORT = 3354

      def initialize(config, environment)
        @environment = environment
        @config = config
      end

      def definition
        return nil if @config.settings.nil?
        return nil if @config.adapter.name == 'sqlite3'

        {
          'image' => @config.adapter.image,
          'environment' => @config.adapter.environment
        }.merge(ports).merge(volumes)
      end

      private

      def volume
        @config.env.database_volume
      end

      def ports
        return {} unless %i[development test].include?(@environment)

        { 'ports' => ["#{@config.settings.fetch('port')}:#{PORT}"] }
      end

      def volumes
        return {} unless @environment == :development

        { 'volumes' => ["#{volume}:#{@config.adapter.data_dir}"] }
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
orchestration-0.3.17 lib/orchestration/docker_compose/database_service.rb
orchestration-0.3.16 lib/orchestration/docker_compose/database_service.rb
orchestration-0.3.15 lib/orchestration/docker_compose/database_service.rb
orchestration-0.3.14 lib/orchestration/docker_compose/database_service.rb
orchestration-0.3.13 lib/orchestration/docker_compose/database_service.rb
orchestration-0.3.12 lib/orchestration/docker_compose/database_service.rb
orchestration-0.3.11 lib/orchestration/docker_compose/database_service.rb
orchestration-0.3.10 lib/orchestration/docker_compose/database_service.rb
orchestration-0.3.9 lib/orchestration/docker_compose/database_service.rb