docker-provider 0.0.2 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +25 -0
- data/Gemfile +7 -7
- data/Gemfile.lock +51 -40
- data/LICENSE.txt +1 -1
- data/README.md +130 -60
- data/Rakefile +6 -1
- data/boxes/dind/.gitignore +2 -0
- data/boxes/dind/Dockerfile +12 -0
- data/boxes/dind/README.md +10 -0
- data/boxes/{nginx → dind}/Vagrantfile.sample +2 -1
- data/boxes/{nginx → dind}/metadata.json +0 -0
- data/boxes/precise/Dockerfile +10 -9
- data/boxes/precise/Vagrantfile.sample +0 -1
- data/development/Vagrantfile +1 -9
- data/docker-provider.gemspec +1 -2
- data/example/Vagrantfile +11 -10
- data/lib/docker-provider.rb +2 -1
- data/lib/docker-provider/action.rb +17 -6
- data/lib/docker-provider/action/check_running.rb +1 -1
- data/lib/docker-provider/action/create.rb +14 -11
- data/lib/docker-provider/action/prepare_nfs_settings.rb +59 -0
- data/lib/docker-provider/action/prepare_nfs_valid_ids.rb +19 -0
- data/lib/docker-provider/config.rb +14 -7
- data/lib/docker-provider/driver.rb +30 -6
- data/lib/docker-provider/errors.rb +14 -0
- data/lib/docker-provider/plugin.rb +10 -3
- data/lib/docker-provider/provider.rb +1 -1
- data/lib/docker-provider/synced_folder.rb +20 -0
- data/lib/docker-provider/version.rb +1 -1
- data/locales/en.yml +13 -2
- data/spec/acceptance/provider/basic_spec.rb +94 -0
- data/spec/acceptance/provider/network_forwarded_port_spec.rb +29 -0
- data/spec/acceptance/provider/synced_folder_spec.rb +39 -0
- data/spec/acceptance/provisioner/chef_solo_spec.rb +37 -0
- data/spec/acceptance/provisioner/puppet_spec.rb +37 -0
- data/spec/acceptance/provisioner/shell_spec.rb +51 -0
- data/spec/acceptance/synced_folder/nfs_spec.rb +36 -0
- data/spec/unit/driver_spec.rb +70 -11
- data/vagrant-spec.config.rb +8 -0
- metadata +40 -29
- data/boxes/nginx/.gitignore +0 -1
- data/boxes/nginx/Dockerfile +0 -4
- data/boxes/nginx/README.md +0 -25
- data/boxes/nginx/start +0 -5
- data/lib/docker-provider/action/share_folders.rb +0 -63
- data/spec/acceptance/Vagrantfile +0 -25
- data/spec/acceptance/vagrant_ssh.bats +0 -34
- data/spec/acceptance/vagrant_up.bats +0 -35
@@ -0,0 +1,8 @@
|
|
1
|
+
Vagrant::Spec::Acceptance.configure do |c|
|
2
|
+
c.component_paths << File.expand_path("../spec/acceptance", __FILE__)
|
3
|
+
|
4
|
+
c.provider "docker",
|
5
|
+
# wget http://bit.ly/vagrant-docker-precise -O precise.box
|
6
|
+
box: "#{File.expand_path("../", __FILE__)}/precise.box",
|
7
|
+
features: ['!suspend']
|
8
|
+
end
|
metadata
CHANGED
@@ -1,67 +1,67 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: docker-provider
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fabio Rehm
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-02-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.3'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.3'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '0'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
-
description:
|
55
|
+
description: Docker provider for Vagrant
|
56
56
|
email:
|
57
57
|
- fgrehm@gmail.com
|
58
58
|
executables: []
|
59
59
|
extensions: []
|
60
60
|
extra_rdoc_files: []
|
61
61
|
files:
|
62
|
-
- .gitignore
|
63
|
-
- .rspec
|
64
|
-
- .travis.yml
|
62
|
+
- ".gitignore"
|
63
|
+
- ".rspec"
|
64
|
+
- ".travis.yml"
|
65
65
|
- CHANGELOG.md
|
66
66
|
- Gemfile
|
67
67
|
- Gemfile.lock
|
@@ -69,14 +69,13 @@ files:
|
|
69
69
|
- LICENSE.txt
|
70
70
|
- README.md
|
71
71
|
- Rakefile
|
72
|
+
- boxes/dind/.gitignore
|
73
|
+
- boxes/dind/Dockerfile
|
74
|
+
- boxes/dind/README.md
|
75
|
+
- boxes/dind/Vagrantfile.sample
|
76
|
+
- boxes/dind/metadata.json
|
72
77
|
- boxes/dummy/README.md
|
73
78
|
- boxes/dummy/metadata.json
|
74
|
-
- boxes/nginx/.gitignore
|
75
|
-
- boxes/nginx/Dockerfile
|
76
|
-
- boxes/nginx/README.md
|
77
|
-
- boxes/nginx/Vagrantfile.sample
|
78
|
-
- boxes/nginx/metadata.json
|
79
|
-
- boxes/nginx/start
|
80
79
|
- boxes/precise/.gitignore
|
81
80
|
- boxes/precise/Dockerfile
|
82
81
|
- boxes/precise/README.md
|
@@ -95,21 +94,29 @@ files:
|
|
95
94
|
- lib/docker-provider/action/forward_ports.rb
|
96
95
|
- lib/docker-provider/action/is_running.rb
|
97
96
|
- lib/docker-provider/action/message.rb
|
98
|
-
- lib/docker-provider/action/
|
97
|
+
- lib/docker-provider/action/prepare_nfs_settings.rb
|
98
|
+
- lib/docker-provider/action/prepare_nfs_valid_ids.rb
|
99
99
|
- lib/docker-provider/action/start.rb
|
100
100
|
- lib/docker-provider/action/stop.rb
|
101
101
|
- lib/docker-provider/config.rb
|
102
102
|
- lib/docker-provider/driver.rb
|
103
|
+
- lib/docker-provider/errors.rb
|
103
104
|
- lib/docker-provider/plugin.rb
|
104
105
|
- lib/docker-provider/provider.rb
|
106
|
+
- lib/docker-provider/synced_folder.rb
|
105
107
|
- lib/docker-provider/version.rb
|
106
108
|
- locales/en.yml
|
107
|
-
- spec/acceptance/
|
108
|
-
- spec/acceptance/
|
109
|
-
- spec/acceptance/
|
109
|
+
- spec/acceptance/provider/basic_spec.rb
|
110
|
+
- spec/acceptance/provider/network_forwarded_port_spec.rb
|
111
|
+
- spec/acceptance/provider/synced_folder_spec.rb
|
112
|
+
- spec/acceptance/provisioner/chef_solo_spec.rb
|
113
|
+
- spec/acceptance/provisioner/puppet_spec.rb
|
114
|
+
- spec/acceptance/provisioner/shell_spec.rb
|
115
|
+
- spec/acceptance/synced_folder/nfs_spec.rb
|
110
116
|
- spec/spec_helper.rb
|
111
117
|
- spec/support/unit_example_group.rb
|
112
118
|
- spec/unit/driver_spec.rb
|
119
|
+
- vagrant-spec.config.rb
|
113
120
|
homepage: https://github.com/fgrehm/docker-provider
|
114
121
|
licenses:
|
115
122
|
- MIT
|
@@ -120,24 +127,28 @@ require_paths:
|
|
120
127
|
- lib
|
121
128
|
required_ruby_version: !ruby/object:Gem::Requirement
|
122
129
|
requirements:
|
123
|
-
- -
|
130
|
+
- - ">="
|
124
131
|
- !ruby/object:Gem::Version
|
125
132
|
version: '0'
|
126
133
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
134
|
requirements:
|
128
|
-
- -
|
135
|
+
- - ">="
|
129
136
|
- !ruby/object:Gem::Version
|
130
137
|
version: '0'
|
131
138
|
requirements: []
|
132
139
|
rubyforge_project:
|
133
|
-
rubygems_version: 2.
|
140
|
+
rubygems_version: 2.2.2
|
134
141
|
signing_key:
|
135
142
|
specification_version: 4
|
136
|
-
summary:
|
143
|
+
summary: Docker provider for Vagrant
|
137
144
|
test_files:
|
138
|
-
- spec/acceptance/
|
139
|
-
- spec/acceptance/
|
140
|
-
- spec/acceptance/
|
145
|
+
- spec/acceptance/provider/basic_spec.rb
|
146
|
+
- spec/acceptance/provider/network_forwarded_port_spec.rb
|
147
|
+
- spec/acceptance/provider/synced_folder_spec.rb
|
148
|
+
- spec/acceptance/provisioner/chef_solo_spec.rb
|
149
|
+
- spec/acceptance/provisioner/puppet_spec.rb
|
150
|
+
- spec/acceptance/provisioner/shell_spec.rb
|
151
|
+
- spec/acceptance/synced_folder/nfs_spec.rb
|
141
152
|
- spec/spec_helper.rb
|
142
153
|
- spec/support/unit_example_group.rb
|
143
154
|
- spec/unit/driver_spec.rb
|
data/boxes/nginx/.gitignore
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
Vagrantfile
|
data/boxes/nginx/Dockerfile
DELETED
data/boxes/nginx/README.md
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
# Nginx base box example
|
2
|
-
|
3
|
-
This folder contains an example of a box that is able to run multiple processes.
|
4
|
-
With the provided `Dockerfile` you'll be able to build a base box that runs both
|
5
|
-
nginx and a SSH server that is required by Vagrant to do its "magic".
|
6
|
-
|
7
|
-
|
8
|
-
```
|
9
|
-
docker build -t myuser/vagrant-nginx .
|
10
|
-
docker push myuser/vagrant-nginx
|
11
|
-
sed 's/IMAGE/myuser\/vagrant-nginx/' Vagrantfile.sample > Vagrantfile
|
12
|
-
tar cvzf nginx.box ./metadata.json ./Vagrantfile
|
13
|
-
```
|
14
|
-
|
15
|
-
In order to reach the nginx server running on the container you'll need to
|
16
|
-
forward the ports with a `Vagrantfile` like the one below:
|
17
|
-
|
18
|
-
```ruby
|
19
|
-
Vagrant.configure("2") do |config|
|
20
|
-
# Replace with the name of the box you used when adding
|
21
|
-
config.vm.box = "nginx"
|
22
|
-
# This makes nginx accessible from the host from http://localhost:8080
|
23
|
-
config.vm.network "forwarded_port", guest: 80, host: 8080
|
24
|
-
end
|
25
|
-
```
|
data/boxes/nginx/start
DELETED
@@ -1,63 +0,0 @@
|
|
1
|
-
module VagrantPlugins
|
2
|
-
module DockerProvider
|
3
|
-
module Action
|
4
|
-
class ShareFolders
|
5
|
-
def initialize(app, env)
|
6
|
-
@app = app
|
7
|
-
end
|
8
|
-
|
9
|
-
def call(env)
|
10
|
-
@env = env
|
11
|
-
prepare_folders
|
12
|
-
|
13
|
-
# FIXME: Check whether the container has already been created with
|
14
|
-
# different synced folders and let the user know about it
|
15
|
-
folders = []
|
16
|
-
shared_folders.each do |id, data|
|
17
|
-
folders << {
|
18
|
-
:name => id,
|
19
|
-
:hostpath => File.expand_path(data[:hostpath], @env[:root_path]),
|
20
|
-
:guestpath => data[:guestpath]
|
21
|
-
}
|
22
|
-
end
|
23
|
-
@env[:synced_folders] = folders
|
24
|
-
|
25
|
-
@app.call(env)
|
26
|
-
end
|
27
|
-
|
28
|
-
# This method returns an actual list of synced folders to create and their
|
29
|
-
# proper path.
|
30
|
-
def shared_folders
|
31
|
-
{}.tap do |result|
|
32
|
-
@env[:machine].config.vm.synced_folders.each do |id, data|
|
33
|
-
# Ignore disabled shared folders
|
34
|
-
next if data[:disabled]
|
35
|
-
# This to prevent overwriting the actual shared folders data
|
36
|
-
result[id] = data.dup
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
# Prepares the shared folders by verifying they exist and creating them
|
42
|
-
# if they don't.
|
43
|
-
def prepare_folders
|
44
|
-
shared_folders.each do |id, options|
|
45
|
-
hostpath = Pathname.new(options[:hostpath]).expand_path(@env[:root_path])
|
46
|
-
|
47
|
-
if !hostpath.directory? && options[:create]
|
48
|
-
# Host path doesn't exist, so let's create it.
|
49
|
-
@logger.debug("Host path doesn't exist, creating: #{hostpath}")
|
50
|
-
|
51
|
-
begin
|
52
|
-
hostpath.mkpath
|
53
|
-
rescue Errno::EACCES
|
54
|
-
raise Vagrant::Errors::SharedFolderCreateFailed,
|
55
|
-
:path => hostpath.to_s
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
data/spec/acceptance/Vagrantfile
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
# -*- mode: ruby -*-
|
2
|
-
# vi: set ft=ruby :
|
3
|
-
|
4
|
-
ENV['VAGRANT_DEFAULT_PROVIDER'] = 'docker'
|
5
|
-
|
6
|
-
# This is only needed if you are using the plugin from sources with bundler
|
7
|
-
Vagrant.require_plugin 'docker-provider'
|
8
|
-
|
9
|
-
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
|
10
|
-
VAGRANTFILE_API_VERSION = "2"
|
11
|
-
|
12
|
-
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
13
|
-
config.vm.box = "precise"
|
14
|
-
|
15
|
-
config.vm.provider :docker do |docker|
|
16
|
-
docker.image = "fgrehm/vagrant-ubuntu:precise"
|
17
|
-
docker.cmd = ["/usr/sbin/sshd", "-D", "-e"]
|
18
|
-
end
|
19
|
-
|
20
|
-
config.vm.provision :shell, inline: %[
|
21
|
-
echo 'hello from docker'
|
22
|
-
# mkdir -p /vagrant/tmp
|
23
|
-
# touch /vagrant/tmp/provisioned
|
24
|
-
]
|
25
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
#!/usr/bin/env bats
|
2
|
-
|
3
|
-
setup() {
|
4
|
-
if ! [ $USER = 'vagrant' ]; then
|
5
|
-
echo 'The specs should be run from a Vagrant VM'
|
6
|
-
exit 1
|
7
|
-
fi
|
8
|
-
|
9
|
-
# Destroy all of acceptance specs related containers
|
10
|
-
containers=$(docker ps -a | grep acceptance | wc -l)
|
11
|
-
if [ "$containers" -gt 0 ]; then
|
12
|
-
test_containers=$(docker ps -a | grep acceptance | cut -d' ' -f1)
|
13
|
-
docker stop -t=1 $test_containers
|
14
|
-
docker rm $test_containers
|
15
|
-
fi
|
16
|
-
rm -rf /vagrant/spec/acceptance/{.vagrant,tmp}
|
17
|
-
}
|
18
|
-
|
19
|
-
@test "vagrant ssh on a stopped container errors out" {
|
20
|
-
cd /vagrant/spec/acceptance
|
21
|
-
|
22
|
-
run bundle exec vagrant ssh
|
23
|
-
[ "$status" -eq 1 ]
|
24
|
-
}
|
25
|
-
|
26
|
-
@test "vagrant ssh on a runing container" {
|
27
|
-
cd /vagrant/spec/acceptance
|
28
|
-
bundle exec vagrant up
|
29
|
-
|
30
|
-
run bundle exec vagrant ssh -c 'echo "hello from ssh"'
|
31
|
-
|
32
|
-
[ "$status" -eq 0 ]
|
33
|
-
echo $output | grep -q 'hello from ssh'
|
34
|
-
}
|
@@ -1,35 +0,0 @@
|
|
1
|
-
#!/usr/bin/env bats
|
2
|
-
|
3
|
-
setup() {
|
4
|
-
if ! [ $USER = 'vagrant' ]; then
|
5
|
-
echo 'The specs should be run from a Vagrant VM'
|
6
|
-
exit 1
|
7
|
-
fi
|
8
|
-
|
9
|
-
# Destroy all of acceptance specs related containers
|
10
|
-
containers=$(docker ps -a | grep acceptance | wc -l)
|
11
|
-
if [ "$containers" -gt 0 ]; then
|
12
|
-
test_containers=$(docker ps -a | grep acceptance | cut -d' ' -f1)
|
13
|
-
docker stop -t=1 $test_containers
|
14
|
-
docker rm $test_containers
|
15
|
-
fi
|
16
|
-
rm -rf /vagrant/spec/acceptance/{.vagrant,tmp}
|
17
|
-
}
|
18
|
-
|
19
|
-
@test "vagrant up from scratch runs a docker container" {
|
20
|
-
cd /vagrant/spec/acceptance
|
21
|
-
|
22
|
-
run bundle exec vagrant up
|
23
|
-
[ "$status" -eq 0 ]
|
24
|
-
|
25
|
-
# How many test containers have we got?
|
26
|
-
count=$(docker ps | grep acceptance | wc -l)
|
27
|
-
[ "$count" -eq 1 ]
|
28
|
-
}
|
29
|
-
|
30
|
-
@test "vagrant up from scratch provisions docker container" {
|
31
|
-
cd /vagrant/spec/acceptance
|
32
|
-
run bundle exec vagrant up
|
33
|
-
|
34
|
-
echo $output | grep -q 'hello from docker'
|
35
|
-
}
|