provider/docker: Separate -i and -t flags for exec
This commit is contained in:
parent
bf96b3348b
commit
cfac24779c
|
@ -10,6 +10,7 @@ module VagrantPlugins
|
||||||
options = {}
|
options = {}
|
||||||
options[:detach] = false
|
options[:detach] = false
|
||||||
options[:pty] = false
|
options[:pty] = false
|
||||||
|
options[:interactive] = false
|
||||||
options[:prefix] = true
|
options[:prefix] = true
|
||||||
|
|
||||||
opts = OptionParser.new do |o|
|
opts = OptionParser.new do |o|
|
||||||
|
@ -22,6 +23,10 @@ module VagrantPlugins
|
||||||
options[:detach] = d
|
options[:detach] = d
|
||||||
end
|
end
|
||||||
|
|
||||||
|
o.on("-i", "--[no-]interactive", "Keep STDIN open even if not attached") do |i|
|
||||||
|
options[:interactive] = i
|
||||||
|
end
|
||||||
|
|
||||||
o.on("-t", "--[no-]tty", "Allocate a pty") do |t|
|
o.on("-t", "--[no-]tty", "Allocate a pty") do |t|
|
||||||
options[:pty] = t
|
options[:pty] = t
|
||||||
end
|
end
|
||||||
|
@ -58,15 +63,17 @@ module VagrantPlugins
|
||||||
@env.ui.info("#{machine.id} is not running.")
|
@env.ui.info("#{machine.id} is not running.")
|
||||||
next
|
next
|
||||||
end
|
end
|
||||||
exec_command(machine, options, command)
|
exec_command(machine, command, options)
|
||||||
end
|
end
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
end
|
end
|
||||||
|
|
||||||
def exec_command(machine, options, command)
|
def exec_command(machine, command, options)
|
||||||
exec_cmd = %w(docker exec)
|
exec_cmd = %w(docker exec)
|
||||||
exec_cmd << "-it" if options[:pty]
|
exec_cmd << "-i" if options[:interactive]
|
||||||
|
exec_cmd << "-t" if options[:pty]
|
||||||
|
exec_cmd << "-u" << options[:user] if options[:user]
|
||||||
exec_cmd << machine.id
|
exec_cmd << machine.id
|
||||||
exec_cmd += options[:extra_args] if options[:extra_args]
|
exec_cmd += options[:extra_args] if options[:extra_args]
|
||||||
exec_cmd += command
|
exec_cmd += command
|
||||||
|
|
|
@ -43,13 +43,13 @@ This Vagrantfile will start the official Docker Consul image. However, the
|
||||||
associated Vagrant command to `docker-exec` into this instance is:
|
associated Vagrant command to `docker-exec` into this instance is:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ vagrant docker-exec -t -- /bin/sh
|
$ vagrant docker-exec -it -- /bin/sh
|
||||||
```
|
```
|
||||||
|
|
||||||
In particular, the command is actually:
|
In particular, the command is actually:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ vagrant docker-exec default -t -- /bin/sh
|
$ vagrant docker-exec default -it -- /bin/sh
|
||||||
```
|
```
|
||||||
|
|
||||||
Because "default" is the default name of the first defined VM. In a
|
Because "default" is the default name of the first defined VM. In a
|
||||||
|
@ -76,13 +76,13 @@ The following command is invalid:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Not valid
|
# Not valid
|
||||||
$ vagrant docker-exec -t nginx -- /bin/sh
|
$ vagrant docker-exec -it nginx -- /bin/sh
|
||||||
```
|
```
|
||||||
|
|
||||||
This is because the "name" of the VM is "web", so the command is actually:
|
This is because the "name" of the VM is "web", so the command is actually:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ vagrant docker-exec -t web -- /bin/sh
|
$ vagrant docker-exec -it web -- /bin/sh
|
||||||
```
|
```
|
||||||
|
|
||||||
For this reason, it is recommended that you name the VM the same as the
|
For this reason, it is recommended that you name the VM the same as the
|
||||||
|
@ -90,7 +90,7 @@ container. In the above example, it is unambiguous that the command to enter
|
||||||
the Consul container is:
|
the Consul container is:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
$ vagrant docker-exec -t consul -- /bin/sh
|
$ vagrant docker-exec -it consul -- /bin/sh
|
||||||
```
|
```
|
||||||
|
|
||||||
### docker-logs
|
### docker-logs
|
||||||
|
|
Loading…
Reference in New Issue