docker-template 0.8.0 → 0.10.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/Gemfile +1 -1
- data/Rakefile +18 -20
- data/bin/docker-template +7 -10
- data/comp/list +7 -10
- data/comp/list.pak +0 -0
- data/lib/docker/template.rb +33 -30
- data/lib/docker/template/auth.rb +72 -0
- data/lib/docker/template/builder.rb +169 -81
- data/lib/docker/template/builder/normal.rb +58 -0
- data/lib/docker/template/builder/rootfs.rb +111 -0
- data/lib/docker/template/builder/scratch.rb +165 -0
- data/lib/docker/template/cache.rb +15 -20
- data/lib/docker/template/cli.rb +77 -20
- data/lib/docker/template/cli/build.rb +23 -8
- data/lib/docker/template/cli/list.rb +10 -10
- data/lib/docker/template/error.rb +12 -43
- data/lib/docker/template/logger.rb +99 -38
- data/lib/docker/template/{metadata.rb → meta.rb} +209 -114
- data/lib/docker/template/notify.rb +55 -12
- data/lib/docker/template/parser.rb +44 -35
- data/lib/docker/template/repo.rb +85 -81
- data/lib/docker/template/version.rb +1 -3
- data/lib/erb/context.rb +5 -8
- data/templates/rootfs/alpine.erb +65 -66
- data/templates/rootfs/ubuntu.erb +71 -42
- metadata +32 -12
- data/lib/docker/template/normal.rb +0 -46
- data/lib/docker/template/rootfs.rb +0 -85
- data/lib/docker/template/scratch.rb +0 -166
- data/shas.yml +0 -11
@@ -1,11 +1,9 @@
|
|
1
|
-
# ----------------------------------------------------------------------------
|
2
1
|
# Frozen-string-literal: true
|
3
2
|
# Copyright: 2015 - 2016 Jordon Bedwell - Apache v2.0 License
|
4
3
|
# Encoding: utf-8
|
5
|
-
# ----------------------------------------------------------------------------
|
6
4
|
|
7
5
|
module Docker
|
8
6
|
module Template
|
9
|
-
VERSION = "0.
|
7
|
+
VERSION = "0.10.0"
|
10
8
|
end
|
11
9
|
end
|
data/lib/erb/context.rb
CHANGED
@@ -1,27 +1,24 @@
|
|
1
|
-
# ----------------------------------------------------------------------------
|
2
1
|
# Frozen-string-literal: true
|
3
2
|
# Copyright: 2015 - 2016 Jordon Bedwell - Apache v2.0 License
|
4
3
|
# Encoding: utf-8
|
5
|
-
# ----------------------------------------------------------------------------
|
6
4
|
|
7
5
|
require "erb"
|
8
6
|
class ERB
|
9
7
|
class Context
|
10
8
|
|
11
|
-
#
|
9
|
+
# --
|
12
10
|
# Wraps any data you wish to send to ERB limiting it's context access.
|
13
|
-
#
|
14
|
-
|
11
|
+
# @param [Hash] vars the variables you wish to set
|
12
|
+
# --
|
15
13
|
def initialize(vars)
|
16
14
|
vars.each do |key, val|
|
17
15
|
instance_variable_set("@#{key}", val)
|
18
16
|
end
|
19
17
|
end
|
20
18
|
|
21
|
-
#
|
19
|
+
# --
|
22
20
|
# Returns the binding so that we can ship it off and give it to ERB.
|
23
|
-
#
|
24
|
-
|
21
|
+
# --
|
25
22
|
def _binding
|
26
23
|
return binding
|
27
24
|
end
|
data/templates/rootfs/alpine.erb
CHANGED
@@ -2,69 +2,68 @@
|
|
2
2
|
[ "$DEBUG" ] && set -x
|
3
3
|
set -e
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
$
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
<% if @
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
rm -rf $
|
68
|
-
rm -rf $
|
69
|
-
|
70
|
-
tar -zf $TAR_GZ --numeric-owner -C $rootfs -c .
|
5
|
+
ROOTFS=$(mktemp -d)
|
6
|
+
TMPDIR=$(mktemp -d)
|
7
|
+
|
8
|
+
MIRROR_HOST="<%= @meta.mirror_host %>"
|
9
|
+
[ "$MIRROR_HOST" ] || MIRROR_HOST="mirror.envygeeks.io"
|
10
|
+
MIRRORS="\nhttp://$MIRROR_HOST/alpine/<%= @meta.release =~ /^[\d,\.]+$/ ? "v" : "" %><%= @meta.release %>/main"
|
11
|
+
MIRRORS=$MIRRORS"\n@community http://$MIRROR_HOST/alpine/edge/community"
|
12
|
+
MIRRORS=$MIRRORS"\n@testing http://$MIRROR_HOST/alpine/edge/testing"
|
13
|
+
RELEASE_URL="http://$MIRROR_HOST/alpine/<%= @meta.release \
|
14
|
+
=~ /^[\d,\.]+$/ ? "v" : "" %><%= @meta.release %>/main"
|
15
|
+
|
16
|
+
cd $TMPDIR
|
17
|
+
mkdir -p $ROOTFS/etc
|
18
|
+
apk update --repository=$RELEASE_URL
|
19
|
+
apk fetch --stdout --repository=$RELEASE_URL alpine-keys | \
|
20
|
+
tar -xvzC $ROOTFS etc/
|
21
|
+
|
22
|
+
# --
|
23
|
+
|
24
|
+
apk --initdb --root=$ROOTFS --repository=$RELEASE_URL --update-cache add \
|
25
|
+
apk-tools libc-utils alpine-baselayout alpine-keys busybox musl \
|
26
|
+
busybox-suid alpine-conf
|
27
|
+
|
28
|
+
# --
|
29
|
+
|
30
|
+
apk --keys-dir=$ROOTFS/etc/apk/keys --root=$ROOTFS --repository=$RELEASE_URL \
|
31
|
+
fetch --stdout alpine-base | \
|
32
|
+
tar -xvz -C "$ROOTFS" etc/
|
33
|
+
|
34
|
+
# --
|
35
|
+
|
36
|
+
cd ~> /dev/null
|
37
|
+
cp -R $COPY_DIR/* $ROOTFS 2> /dev/null || true
|
38
|
+
|
39
|
+
# --
|
40
|
+
|
41
|
+
cp /etc/hosts $ROOTFS/etc/hosts
|
42
|
+
cp /etc/resolv.conf $ROOTFS/etc/resolv.conf
|
43
|
+
printf "$MIRRORS" > $ROOTFS/etc/apk/repositories
|
44
|
+
apk --update --root=$ROOTFS add <%= @meta.packages %>
|
45
|
+
apk del --root=$ROOTFS <%= @meta.package_cleanup %>
|
46
|
+
apk del --root=$ROOTFS <%= @meta.package_deep_cleanup %>
|
47
|
+
mv $ROOTFS/var/run/* $ROOTFS/run 2> /dev/null || true
|
48
|
+
mv $ROOTFS/var/lock $ROOTFS/run 2> /dev/null || true
|
49
|
+
rm -rf $ROOTFS/var/run $ROOTFS/var/lock
|
50
|
+
ln -s $ROOTFS/run/lock $ROOTFS/var/lock
|
51
|
+
ln -s $ROOTFS/run $ROOTFS/var/run
|
52
|
+
|
53
|
+
# --
|
54
|
+
|
55
|
+
<% if @meta.helpers? %>
|
56
|
+
mkdir -p /usr/src
|
57
|
+
cd /usr/src
|
58
|
+
|
59
|
+
apk --update add ca-certificates git
|
60
|
+
git clone --verbose https://github.com/envygeeks/docker-helper.git
|
61
|
+
cp -R docker-helper/src/* $ROOTFS/
|
62
|
+
<% end %>
|
63
|
+
|
64
|
+
# --
|
65
|
+
|
66
|
+
cleanup $ROOTFS
|
67
|
+
rm -rf $ROOTFS/etc/hosts
|
68
|
+
rm -rf $ROOTFS/etc/resolv.conf
|
69
|
+
tar -zf $TAR_GZ --numeric-owner -C $ROOTFS -c .
|
data/templates/rootfs/ubuntu.erb
CHANGED
@@ -2,75 +2,104 @@
|
|
2
2
|
[ "$DEBUG" ] && set -x
|
3
3
|
set -e
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
cd $
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
5
|
+
ROOTFS=$(mktemp -d)
|
6
|
+
PARTNER_URL="https://partner-images.canonical.com/core"
|
7
|
+
TMP=$(mktemp -d)
|
8
|
+
|
9
|
+
# --
|
10
|
+
|
11
|
+
cd $TMP
|
12
|
+
apk --update add wget gnupg ca-certificates \
|
13
|
+
gawk sed
|
14
|
+
|
15
|
+
# --
|
16
|
+
|
17
|
+
gpg --keyserver keyserver.ubuntu.com --recv-keys 1A5D6C4C7DB87C81
|
18
|
+
wget $PARTNER_URL/<%= @meta.release %>/current/SHA256SUMS.gpg
|
19
|
+
wget $PARTNER_URL/<%= @meta.release %>/current/SHA256SUMS
|
16
20
|
gpg --verify SHA256SUMS.gpg SHA256SUMS
|
17
21
|
|
18
|
-
|
19
|
-
sha=$(cat SHA256SUMS | grep "
|
22
|
+
cat SHA256SUMS
|
23
|
+
sha=$(cat SHA256SUMS | grep "amd64" | awk -F' *' '{ print $1 }')
|
24
|
+
img=$(cat SHA256SUMS | grep "amd64" | awk -F' *' '{ print $2 }' \
|
25
|
+
| sed -r 's/^\*//')
|
20
26
|
|
21
|
-
wget
|
27
|
+
wget --progress=bar "$PARTNER_URL/<%= @meta.release %>/current/$img"
|
22
28
|
if [ "$(sha256sum $img | awk '{ print $1 }')" != "$sha" ]; then
|
23
29
|
echo "Bailing, the SHA256sum did not match."
|
24
30
|
fi
|
25
31
|
|
26
|
-
|
32
|
+
# --
|
33
|
+
|
34
|
+
tar xzf $img -C $ROOTFS
|
27
35
|
cd -> /dev/null
|
28
36
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
37
|
+
# --
|
38
|
+
|
39
|
+
rm -rf $ROOTFS/etc/hosts
|
40
|
+
rm -rf $ROOTFS/etc/resolv.conf
|
41
|
+
cp /etc/resolv.conf $ROOTFS/etc/resolv.conf
|
42
|
+
cp /etc/hosts $ROOTFS/etc/hosts
|
43
|
+
|
44
|
+
# --
|
33
45
|
|
34
|
-
chroot "$
|
46
|
+
chroot "$ROOTFS" sh -ec "{
|
35
47
|
dpkg-divert --local --rename --add /sbin/initctl
|
36
48
|
dpkg-divert --local --rename --add /usr/sbin/update-rc.d
|
37
49
|
ln -s /bin/true /usr/sbin/update-rc.d
|
38
50
|
ln -s /bin/true /sbin/initctl
|
39
51
|
}"
|
40
52
|
|
41
|
-
|
53
|
+
# --
|
54
|
+
|
55
|
+
chroot "$ROOTFS" sh -ec "{
|
42
56
|
sed -i 's/^#\s*\(deb.*universe\)$/\1/g' /etc/apt/sources.list
|
43
57
|
echo \"debconf debconf/frontend select Noninteractive\" | debconf-set-selections
|
44
|
-
echo 'Dpkg::Options { \"--force-confdef\"; \"--force-confold\"; }' > /etc/apt/apt.conf.d/
|
58
|
+
echo 'Dpkg::Options { \"--force-confdef\"; \"--force-confold\"; }' > /etc/apt/apt.conf.d/03confdef
|
59
|
+
echo 'APT::Get::Install-Recommends \"false\"; APT::Get::Install-Suggests \"false\";' > /etc/apt/apt.conf.d/00norecommends
|
60
|
+
echo 'APT::Get::Assume-Yes \"true\"; APT::Get::force-yes \"true\";' > /etc/apt/apt.conf.d/01yes
|
61
|
+
echo 'Apt::Get::Purge \"true\";' > /etc/apt/apt.conf.d/02purge
|
45
62
|
echo \"exit 101\" > /usr/sbin/policy-rc.d policy-rc.d
|
46
63
|
sed -ri '/^(deb-src\s+|$|#)/d' /etc/apt/sources.list
|
47
64
|
chmod uog+x /usr/sbin/policy-rc.d
|
48
65
|
|
49
66
|
apt-get update
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
apt-get autoremove
|
55
|
-
apt-get autoremove --purge \$(deborphan --guess-all) deborphan -yf
|
56
|
-
<% if @metadata.pkgs? %>apt-get install --no-install-recommends -y <%= @metadata.pkgs %><% end %>
|
57
|
-
<% if @metadata.packages? %>apt-get install --no-install-recommends -y <%= @metadata.packages %><% end %>
|
58
|
-
<% if @metadata.package_cleanup? %>apt-get autoremove --purge -y <%= @metadata.package_cleanup %><% end %>
|
59
|
-
<% if @metadata.pkg_cleanup? %>apt-get autoremove --purge -y <%= @metadata.pkg_cleanup %><% end %>
|
60
|
-
apt-get autoremove --purge
|
67
|
+
apt-get install locales deborphan <%= @meta.packages %>
|
68
|
+
echo 'Yes, do as I say!' | SUDO_FORCE_REMOVE=yes apt-get autoremove -f <%= @meta.package_cleanup %>
|
69
|
+
echo 'Yes, do as I say!' | SUDO_FORCE_REMOVE=yes apt-get autoremove -f <%= @meta.package_deep_cleanup %>
|
70
|
+
apt-get autoremove \$(deborphan --guess-all) deborphan
|
71
|
+
apt-get autoremove
|
61
72
|
apt-get autoclean
|
62
73
|
apt-get clean
|
63
74
|
|
64
75
|
rm -rf /tmp/remove
|
65
76
|
}"
|
66
77
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
mkdir -p
|
78
|
+
# --
|
79
|
+
|
80
|
+
<% if @meta.helpers? %>
|
81
|
+
chroot $ROOTFS sh -ec '{
|
82
|
+
mkdir -p /usr/src
|
83
|
+
cd /usr/src
|
84
|
+
|
85
|
+
apt-get update
|
86
|
+
apt-get install --no-install-recommends -yf git ca-certificates
|
87
|
+
git clone https://github.com/envygeeks/docker-helper.git
|
88
|
+
cp -R docker-helper/src/* /
|
89
|
+
rm -rf /usr/src/*
|
90
|
+
|
91
|
+
apt-get autoremove --purge \
|
92
|
+
git ca-certificates -yf
|
93
|
+
}'
|
94
|
+
<% end %>
|
95
|
+
|
96
|
+
# --
|
97
|
+
|
98
|
+
cp -R $COPY_DIR/* $ROOTFS
|
99
|
+
cleanup $ROOTFS
|
100
|
+
|
101
|
+
# --
|
72
102
|
|
73
|
-
rm -rf $
|
74
|
-
rm -rf $
|
75
|
-
|
76
|
-
tar -zf $TAR_GZ --numeric-owner -C $rootfs -c .
|
103
|
+
rm -rf $ROOTFS/etc/hosts
|
104
|
+
rm -rf $ROOTFS/etc/resolv.conf
|
105
|
+
tar -zf $TAR_GZ --numeric-owner -C $ROOTFS -c .
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: docker-template
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jordon Bedwell
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -42,16 +42,22 @@ dependencies:
|
|
42
42
|
name: activesupport
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: '4.2'
|
48
|
+
- - "<"
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: '5.1'
|
48
51
|
type: :runtime
|
49
52
|
prerelease: false
|
50
53
|
version_requirements: !ruby/object:Gem::Requirement
|
51
54
|
requirements:
|
52
|
-
- - "
|
55
|
+
- - ">="
|
53
56
|
- !ruby/object:Gem::Version
|
54
57
|
version: '4.2'
|
58
|
+
- - "<"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '5.1'
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
62
|
name: simple-ansi
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -98,16 +104,30 @@ dependencies:
|
|
98
104
|
name: json
|
99
105
|
requirement: !ruby/object:Gem::Requirement
|
100
106
|
requirements:
|
101
|
-
- - "
|
107
|
+
- - ">="
|
102
108
|
- !ruby/object:Gem::Version
|
103
109
|
version: '1.8'
|
104
110
|
type: :runtime
|
105
111
|
prerelease: false
|
106
112
|
version_requirements: !ruby/object:Gem::Requirement
|
107
113
|
requirements:
|
108
|
-
- - "
|
114
|
+
- - ">="
|
109
115
|
- !ruby/object:Gem::Version
|
110
116
|
version: '1.8'
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: rugged
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - "~>"
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: 0.25.1
|
124
|
+
type: :runtime
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - "~>"
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: 0.25.1
|
111
131
|
description: Build and template awesome Docker images a variety of ways.
|
112
132
|
email:
|
113
133
|
- jordon@envygeeks.io
|
@@ -125,23 +145,23 @@ files:
|
|
125
145
|
- comp/list
|
126
146
|
- comp/list.pak
|
127
147
|
- lib/docker/template.rb
|
148
|
+
- lib/docker/template/auth.rb
|
128
149
|
- lib/docker/template/builder.rb
|
150
|
+
- lib/docker/template/builder/normal.rb
|
151
|
+
- lib/docker/template/builder/rootfs.rb
|
152
|
+
- lib/docker/template/builder/scratch.rb
|
129
153
|
- lib/docker/template/cache.rb
|
130
154
|
- lib/docker/template/cli.rb
|
131
155
|
- lib/docker/template/cli/build.rb
|
132
156
|
- lib/docker/template/cli/list.rb
|
133
157
|
- lib/docker/template/error.rb
|
134
158
|
- lib/docker/template/logger.rb
|
135
|
-
- lib/docker/template/
|
136
|
-
- lib/docker/template/normal.rb
|
159
|
+
- lib/docker/template/meta.rb
|
137
160
|
- lib/docker/template/notify.rb
|
138
161
|
- lib/docker/template/parser.rb
|
139
162
|
- lib/docker/template/repo.rb
|
140
|
-
- lib/docker/template/rootfs.rb
|
141
|
-
- lib/docker/template/scratch.rb
|
142
163
|
- lib/docker/template/version.rb
|
143
164
|
- lib/erb/context.rb
|
144
|
-
- shas.yml
|
145
165
|
- templates/rootfs.erb
|
146
166
|
- templates/rootfs/alpine.erb
|
147
167
|
- templates/rootfs/ubuntu.erb
|
@@ -166,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
166
186
|
version: '0'
|
167
187
|
requirements: []
|
168
188
|
rubyforge_project:
|
169
|
-
rubygems_version: 2.
|
189
|
+
rubygems_version: 2.5.1
|
170
190
|
signing_key:
|
171
191
|
specification_version: 4
|
172
192
|
summary: Build and template Docker images a variety of ways.
|
@@ -1,46 +0,0 @@
|
|
1
|
-
# ----------------------------------------------------------------------------
|
2
|
-
# Frozen-string-literal: true
|
3
|
-
# Copyright: 2015 - 2016 Jordon Bedwell - Apache v2.0 License
|
4
|
-
# Encoding: utf-8
|
5
|
-
# ----------------------------------------------------------------------------
|
6
|
-
|
7
|
-
module Docker
|
8
|
-
module Template
|
9
|
-
class Normal < Builder
|
10
|
-
def teardown(img: false)
|
11
|
-
@img.delete "force" => true if @img && img
|
12
|
-
@context.rmtree if @context && \
|
13
|
-
@context.directory?
|
14
|
-
end
|
15
|
-
|
16
|
-
# ----------------------------------------------------------------------
|
17
|
-
|
18
|
-
def setup_context
|
19
|
-
@context = @repo.tmpdir
|
20
|
-
@copy = @context.join("copy")
|
21
|
-
copy_dockerfile
|
22
|
-
@copy.mkdir
|
23
|
-
end
|
24
|
-
|
25
|
-
# ----------------------------------------------------------------------
|
26
|
-
|
27
|
-
private
|
28
|
-
def copy_dockerfile
|
29
|
-
dockerfile = @repo.root.join("Dockerfile").read
|
30
|
-
data = ERB::Context.new(:metadata => @repo.metadata)
|
31
|
-
data = ERB.new(dockerfile).result(data._binding)
|
32
|
-
context = @context.join("Dockerfile")
|
33
|
-
context.write(data)
|
34
|
-
end
|
35
|
-
|
36
|
-
# ----------------------------------------------------------------------
|
37
|
-
|
38
|
-
private
|
39
|
-
def cache_context
|
40
|
-
return unless @repo.cacheable?
|
41
|
-
return Cache.aliased_context(self) if alias?
|
42
|
-
Cache.context(self, @context)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end
|