dockerun 0.3.6 → 0.4.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/README.md +7 -11
- data/Rakefile +0 -2
- data/Rakefile.bak +8 -0
- data/dockerspec.sample +104 -0
- data/{dockerun.gemspec → dockerun.gemspec.bak} +20 -22
- data/exe/dockerun +8 -115
- data/lib/dockerun/cli/command.rb +133 -0
- data/lib/dockerun/cli/command_factory.rb +313 -0
- data/lib/dockerun/cli/command_result.rb +67 -0
- data/lib/dockerun/cli/delete_container.rb +55 -0
- data/lib/dockerun/cli/delete_image.rb +99 -0
- data/lib/dockerun/cli/run.rb +39 -0
- data/lib/dockerun/cli/user_info.rb +39 -0
- data/lib/dockerun/cli_engine.rb +104 -0
- data/lib/dockerun/config.rb +39 -86
- data/lib/dockerun/context/rubygems.rb +142 -0
- data/lib/dockerun/dfile.rb +204 -0
- data/lib/dockerun/docker_cli.rb +124 -0
- data/lib/dockerun/dsl.rb +291 -0
- data/lib/dockerun/version.rb +1 -1
- data/lib/dockerun.rb +31 -24
- data/sig/dockerun.rbs +4 -0
- metadata +62 -73
- data/.release_history.yml +0 -56
- data/Dockerfile.dockerun +0 -38
- data/Gemfile +0 -15
- data/Gemfile.lock +0 -94
- data/bin/console +0 -15
- data/bin/setup +0 -8
- data/lib/dockerun/bundler_helper.rb +0 -25
- data/lib/dockerun/cli_prompt.rb +0 -18
- data/lib/dockerun/command/dockerun.rb +0 -30
- data/lib/dockerun/command/init.rb +0 -79
- data/lib/dockerun/command/remove_container.rb +0 -99
- data/lib/dockerun/command/reset_image.rb +0 -107
- data/lib/dockerun/command/run.rb +0 -226
- data/lib/dockerun/command/run_new_container.rb +0 -94
- data/lib/dockerun/command/run_new_image.rb +0 -89
- data/lib/dockerun/command/stop_container.rb +0 -90
- data/lib/dockerun/docker_command_factory_helper.rb +0 -19
- data/lib/dockerun/docker_container_helper.rb +0 -213
- data/lib/dockerun/docker_image_helper.rb +0 -381
- data/lib/dockerun/template/general_template_writer.rb +0 -14
- data/lib/dockerun/template/jruby_template_writer.rb +0 -24
- data/lib/dockerun/template/template_engine.rb +0 -27
- data/lib/dockerun/template/template_writer.rb +0 -102
- data/lib/dockerun/user_info.rb +0 -37
- data/template/Dockerfile_general.erb +0 -41
- data/template/setup_ruby_devenv.rb.erb +0 -22
@@ -1,102 +0,0 @@
|
|
1
|
-
|
2
|
-
require 'erb'
|
3
|
-
|
4
|
-
require_relative '../user_info'
|
5
|
-
|
6
|
-
module Dockerun
|
7
|
-
module Template
|
8
|
-
|
9
|
-
class TemplateWriter
|
10
|
-
include UserInfo
|
11
|
-
|
12
|
-
class TemplateNotFound < StandardError; end
|
13
|
-
|
14
|
-
attr_accessor :image, :user_group_id, :user_group_name, :user_id, :user_login, :maintainer, :image_base
|
15
|
-
attr_writer :user_configurables
|
16
|
-
attr_accessor :docker_init_file_path
|
17
|
-
attr_accessor :match_user, :working_dir
|
18
|
-
|
19
|
-
def self.instance(template)
|
20
|
-
tmp = template.to_s.downcase
|
21
|
-
if tmp =~ /jruby/
|
22
|
-
JrubyTemplateWriter.new
|
23
|
-
else
|
24
|
-
TemplateWriter.new
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def initialize(template = :general)
|
29
|
-
@template = template
|
30
|
-
@image = "<Replace me>"
|
31
|
-
user = user_info
|
32
|
-
group = group_info
|
33
|
-
@maintainer = user[:login]
|
34
|
-
@user_group_id = group[:group_id]
|
35
|
-
@user_group_name = group[:group_name]
|
36
|
-
@user_id = user[:user_id]
|
37
|
-
@user_login = user[:login]
|
38
|
-
@image_base = :ubuntu
|
39
|
-
@match_user = TR::RTUtils.on_linux?
|
40
|
-
@working_dir = "/opt"
|
41
|
-
end
|
42
|
-
|
43
|
-
def user_configurables
|
44
|
-
fields = {
|
45
|
-
image: { desc: " Docker image name : ", required: true, type: :ask },
|
46
|
-
image_base: { desc: " Docker image OS : ", default: :debian, type: :select, options: { debian: "Ubuntu/Debian based", not_sure: "Not sure which distro" }.invert },
|
47
|
-
working_dir: { desc: " Default directory after login : ", type: :ask, default: @working_dir }
|
48
|
-
}
|
49
|
-
|
50
|
-
if TR::RTUtils.on_linux?
|
51
|
-
f2 = {
|
52
|
-
match_user: { desc: " Match host user with docker user? ", type: :yes? },
|
53
|
-
#maintainer: { desc: "Maintainer of the Dockerfile", default: @maintainer }
|
54
|
-
|
55
|
-
#user_group_id: { desc: "User group ID that shall be created in docker. Default to current running user's ID", default: @user_group_id.to_s },
|
56
|
-
#user_group_name: { desc: "User group name that shall be created in docker. Default to current running user's group", default: @user_group_name },
|
57
|
-
#user_id: { desc: "User ID that shall be created in docker. Default to current running user ID", default: @user_id.to_s },
|
58
|
-
#user_login: { desc: "User login name that shall be created in docker. Default to current running user's login", default: @user_login }
|
59
|
-
}
|
60
|
-
fields.merge!(f2)
|
61
|
-
end
|
62
|
-
fields
|
63
|
-
end
|
64
|
-
|
65
|
-
def compile(&block)
|
66
|
-
|
67
|
-
if not_empty?(@user_configurables)
|
68
|
-
@user_configurables.each do |k,v|
|
69
|
-
begin
|
70
|
-
self.send("#{k}=", v)
|
71
|
-
rescue Exception => ex
|
72
|
-
STDERR.puts "Setting value exception : #{ex}"
|
73
|
-
end
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
tmp = find_template
|
78
|
-
cont = nil
|
79
|
-
File.open(tmp,"r") do |f|
|
80
|
-
cont = f.read
|
81
|
-
end
|
82
|
-
|
83
|
-
b = binding
|
84
|
-
|
85
|
-
res = ERB.new(cont)
|
86
|
-
res.result(b)
|
87
|
-
end
|
88
|
-
|
89
|
-
protected
|
90
|
-
def find_template
|
91
|
-
@template = :general if is_empty?(@template)
|
92
|
-
|
93
|
-
root = TemplateEngine.template_root
|
94
|
-
templateFile = File.join(root,"Dockerfile_#{@template}.erb")
|
95
|
-
raise TemplateNotFound, "Given template '#{@template}' could not be found" if not File.exist?(templateFile)
|
96
|
-
|
97
|
-
templateFile
|
98
|
-
end
|
99
|
-
|
100
|
-
end
|
101
|
-
end
|
102
|
-
end
|
data/lib/dockerun/user_info.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
|
2
|
-
require 'etc'
|
3
|
-
|
4
|
-
module Dockerun
|
5
|
-
|
6
|
-
module UserInfo
|
7
|
-
include TR::CondUtils
|
8
|
-
|
9
|
-
def user_info(login = nil)
|
10
|
-
login = Etc.getlogin if is_empty?(login)
|
11
|
-
res = { login: login }
|
12
|
-
begin
|
13
|
-
res[:user_id] = Etc.getpwnam(login).uid
|
14
|
-
rescue Exception => ex
|
15
|
-
res[:user_id] = nil
|
16
|
-
end
|
17
|
-
res
|
18
|
-
end
|
19
|
-
|
20
|
-
def group_info(login = nil)
|
21
|
-
login = Etc.getlogin if is_empty?(login)
|
22
|
-
res = { }
|
23
|
-
begin
|
24
|
-
gnm = Etc.getgrnam(login)
|
25
|
-
res[:group_name] = gnm.name
|
26
|
-
res[:group_id] = gnm.gid
|
27
|
-
rescue Exception => ex
|
28
|
-
p ex
|
29
|
-
res[:group_name] = ""
|
30
|
-
res[:group_id] = nil
|
31
|
-
end
|
32
|
-
res
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
|
2
|
-
FROM <%= @image %>
|
3
|
-
LABEL version="0.1"
|
4
|
-
LABEL maintainer="<%= @maintainer %>"
|
5
|
-
LABEL description="Dockerfile generated by dockerun"
|
6
|
-
LABEL dockerun-info="https://github.com/chrisliaw/dockerun"
|
7
|
-
|
8
|
-
<% case @image_base.to_sym
|
9
|
-
when :fedora %>
|
10
|
-
RUN dnf update && dnf install sudo git curl
|
11
|
-
<% when :debian %>
|
12
|
-
RUN apt-get update && apt-get install -y sudo git curl build-essential vim
|
13
|
-
<% end %>
|
14
|
-
|
15
|
-
<% if TR::RTUtils.on_linux? and @match_user == true %>
|
16
|
-
|
17
|
-
RUN groupadd -f -g <%= @user_group_id %> <%= @user_group_name %> && \
|
18
|
-
useradd -u <%= @user_id %> -g <%= @user_group_id %> -m <%= @user_login %> && \
|
19
|
-
usermod -aG sudo <%= @user_login %> && \
|
20
|
-
echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
|
21
|
-
|
22
|
-
USER <%= @user_login %>
|
23
|
-
|
24
|
-
# from this point onwards, sudo is required for privileaged operation
|
25
|
-
#RUN sudo apt-get install -y curl build-essential
|
26
|
-
|
27
|
-
<% end %>
|
28
|
-
|
29
|
-
<% if not (@docker_init_file_path.nil? or @docker_init_file_path.empty?) %>
|
30
|
-
COPY <%= File.basename(@docker_init_file_path) %> /tmp/docker_init.rb
|
31
|
-
RUN ruby /tmp/docker_init.rb
|
32
|
-
<% end %>
|
33
|
-
|
34
|
-
<% if not_empty?(@working_dir) %>
|
35
|
-
WORKDIR <%= @working_dir %>
|
36
|
-
<% end %>
|
37
|
-
|
38
|
-
# other Dockerfile entries starts here
|
39
|
-
|
40
|
-
CMD [ "/bin/bash", "--login" ]
|
41
|
-
|
@@ -1,22 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
## This file is auto-generated. Changes on this file will be overwritten by newly generate file on next run
|
4
|
-
|
5
|
-
# setup env
|
6
|
-
WS_ROOT = "<%= @ws_root.nil? ? "/opt" : @ws_root %>"
|
7
|
-
|
8
|
-
<% if not (@shared_dirs.nil? or @shared_dirs.empty?) %>
|
9
|
-
<% @shared_dirs.each do |name, pa| %>
|
10
|
-
`bundle config --global local.<%= name %> <%= pa %>`
|
11
|
-
<% end %>
|
12
|
-
<% end %>
|
13
|
-
|
14
|
-
bashrc = File.join(Dir.home,".bashrc")
|
15
|
-
if File.exist?(bashrc)
|
16
|
-
cont = File.read(bashrc)
|
17
|
-
if not cont =~ /^alias be/
|
18
|
-
`echo "alias be=\\"bundle exec\\"" >> #{bashrc}`
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
|