diff --git a/plugins/providers/docker/driver/compose.rb b/plugins/providers/docker/driver/compose.rb index 506188765..deb77034e 100644 --- a/plugins/providers/docker/driver/compose.rb +++ b/plugins/providers/docker/driver/compose.rb @@ -83,7 +83,14 @@ module VagrantPlugins # need to worry about uniqueness with compose name = machine.name.to_s image = params.fetch(:image) - links = params.fetch(:links) + links = Array(params.fetch(:links, [])).map do |link| + case link + when Array + link + else + link.to_s.split(":") + end + end ports = Array(params[:ports]) volumes = Array(params[:volumes]).map do |v| v = v.to_s diff --git a/test/unit/plugins/providers/docker/driver_compose_test.rb b/test/unit/plugins/providers/docker/driver_compose_test.rb index 3c3b1fe90..d49ee8e54 100644 --- a/test/unit/plugins/providers/docker/driver_compose_test.rb +++ b/test/unit/plugins/providers/docker/driver_compose_test.rb @@ -82,11 +82,22 @@ describe VagrantPlugins::DockerProvider::Driver::Compose do expect(docker_yml).to receive(:write).with(/#{params[:volumes]}/) end + context 'when links are provided as strings' do + before{ params[:links] = ["linkl1:linkr1", "linkl2:linkr2"] } + + it 'links containers' do + params[:links].flatten.map{|l| l.split(':')}.each do |link| + expect(docker_yml).to receive(:write).with(/#{link}/) + end + subject.create(params) + end + end + it 'links containers' do params[:links].each do |link| expect(docker_yml).to receive(:write).with(/#{link}/) - subject.create(params) end + subject.create(params) end it 'sets environmental variables' do