diff --git a/README.md b/README.md index 379dcbee..0bef1612 100644 --- a/README.md +++ b/README.md @@ -500,6 +500,9 @@ accessories: - MYSQL_ROOT_PASSWORD volumes: - /var/lib/mysql:/var/lib/mysql + options: + cpus: 4 + memory: "2GB" redis: image: redis:latest host: 1.1.1.4 diff --git a/lib/mrsk/commands/accessory.rb b/lib/mrsk/commands/accessory.rb index 76d4fa96..04852d3d 100644 --- a/lib/mrsk/commands/accessory.rb +++ b/lib/mrsk/commands/accessory.rb @@ -1,6 +1,7 @@ class Mrsk::Commands::Accessory < Mrsk::Commands::Base attr_reader :accessory_config - delegate :service_name, :image, :host, :port, :files, :directories, :publish_args, :env_args, :volume_args, :label_args, to: :accessory_config + delegate :service_name, :image, :host, :port, :files, :directories, :publish_args, :env_args, :volume_args, + :label_args, :option_args, to: :accessory_config def initialize(config, name:) super(config) @@ -17,6 +18,7 @@ class Mrsk::Commands::Accessory < Mrsk::Commands::Base *env_args, *volume_args, *label_args, + *option_args, image end diff --git a/lib/mrsk/configuration/accessory.rb b/lib/mrsk/configuration/accessory.rb index f1051423..73c8a7dc 100644 --- a/lib/mrsk/configuration/accessory.rb +++ b/lib/mrsk/configuration/accessory.rb @@ -1,5 +1,5 @@ class Mrsk::Configuration::Accessory - delegate :argumentize, :argumentize_env_with_secrets, to: Mrsk::Utils + delegate :argumentize, :argumentize_env_with_secrets, :optionize, to: Mrsk::Utils attr_accessor :name, :specifics @@ -67,6 +67,14 @@ class Mrsk::Configuration::Accessory argumentize "--volume", volumes end + def option_args + if args = specifics["options"] + optionize args + else + [] + end + end + private attr_accessor :config diff --git a/test/configuration/accessory_test.rb b/test/configuration/accessory_test.rb index 7062de37..fd070949 100644 --- a/test/configuration/accessory_test.rb +++ b/test/configuration/accessory_test.rb @@ -39,7 +39,11 @@ class ConfigurationAccessoryTest < ActiveSupport::TestCase }, "volumes" => [ "/var/lib/redis:/data" - ] + ], + "options" => { + "cpus" => 4, + "memory" => "2GB" + } } } } @@ -104,4 +108,8 @@ class ConfigurationAccessoryTest < ActiveSupport::TestCase test "directories" do assert_equal({"$PWD/app-mysql/data"=>"/var/lib/mysql"}, @config.accessory(:mysql).directories) end + + test "options" do + assert_equal ["--cpus", "\"4\"", "--memory", "\"2GB\""], @config.accessory(:redis).option_args + end end