Sha256: 2e928cd5eacb33235c755680fa5849e6520fc61e7565dff488424fed8ad8d222

Contents?: true

Size: 1.01 KB

Versions: 5

Compression:

Stored size: 1.01 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 {} if @environment == :test

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

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
orchestration-0.3.8 lib/orchestration/docker_compose/database_service.rb
orchestration-0.3.7 lib/orchestration/docker_compose/database_service.rb
orchestration-0.3.6 lib/orchestration/docker_compose/database_service.rb
orchestration-0.3.5 lib/orchestration/docker_compose/database_service.rb
orchestration-0.3.4 lib/orchestration/docker_compose/database_service.rb