providers/docker: host IP and protocol is respected [GH-4505]

This commit is contained in:
Mitchell Hashimoto 2014-10-21 17:17:34 -07:00
parent 5228437b30
commit fb1a825c0d
4 changed files with 18 additions and 3 deletions

View File

@ -5,6 +5,8 @@ BUG FIXES:
- core: Fix cases where sometimes SSH connection would hang. - core: Fix cases where sometimes SSH connection would hang.
- providers/docker: Create args works. [GH-4526] - providers/docker: Create args works. [GH-4526]
- providers/docker: Nicer error if package is called. [GH-4595] - providers/docker: Nicer error if package is called. [GH-4595]
- providers/docker: Host IP restriction is forwarded through. [GH-4505]
- providers/docker: Protocol is now honored in direct `ports settings.
- providers/virtualbox: Show a human-friendly error if VirtualBox didn't - providers/virtualbox: Show a human-friendly error if VirtualBox didn't
clean up an existing VM. [GH-4681] clean up an existing VM. [GH-4681]
- provisioners/docker: Search for docker binary in multiple places. [GH-4580] - provisioners/docker: Search for docker binary in multiple places. [GH-4580]

View File

@ -143,7 +143,9 @@ module VagrantPlugins
result += mappings.values.map do |fp| result += mappings.values.map do |fp|
protocol = "" protocol = ""
protocol = "/udp" if fp[:protocol].to_s == "udp" protocol = "/udp" if fp[:protocol].to_s == "udp"
"#{fp[:host]}:#{fp[:guest]}#{protocol}" host_ip = ""
host_ip = "#{fp[:host_ip]}:" if fp[:host_ip]
"#{host_ip}#{fp[:host]}:#{fp[:guest]}#{protocol}"
end.compact end.compact
result result

View File

@ -8,9 +8,19 @@ module VagrantPlugins
def call(env) def call(env)
env[:machine].provider_config.ports.each do |p| env[:machine].provider_config.ports.each do |p|
host_ip = nil
protocol = "tcp"
host, guest = p.split(":", 2) host, guest = p.split(":", 2)
if guest.include?(":")
host_ip = host
host, guest = guest.split(":", 2)
end
guest, protocol = guest.split("/", 2) if guest.include?("/")
env[:machine].config.vm.network "forwarded_port", env[:machine].config.vm.network "forwarded_port",
host: host.to_i, guest: guest.to_i host: host.to_i, guest: guest.to_i,
host_ip: host_ip,
protocol: protocol
end end
@app.call(env) @app.call(env)

View File

@ -96,7 +96,7 @@ module VagrantPlugins
@image = UNSET_VALUE @image = UNSET_VALUE
@name = UNSET_VALUE @name = UNSET_VALUE
@links = [] @links = []
@ports = [] @ports = UNSET_VALUE
@privileged = UNSET_VALUE @privileged = UNSET_VALUE
@remains_running = UNSET_VALUE @remains_running = UNSET_VALUE
@volumes = [] @volumes = []
@ -148,6 +148,7 @@ module VagrantPlugins
@has_ssh = false if @has_ssh == UNSET_VALUE @has_ssh = false if @has_ssh == UNSET_VALUE
@image = nil if @image == UNSET_VALUE @image = nil if @image == UNSET_VALUE
@name = nil if @name == UNSET_VALUE @name = nil if @name == UNSET_VALUE
@ports = [] if @ports == UNSET_VALUE
@privileged = false if @privileged == UNSET_VALUE @privileged = false if @privileged == UNSET_VALUE
@remains_running = true if @remains_running == UNSET_VALUE @remains_running = true if @remains_running == UNSET_VALUE
@vagrant_machine = nil if @vagrant_machine == UNSET_VALUE @vagrant_machine = nil if @vagrant_machine == UNSET_VALUE