-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathDockerfile.final
More file actions
125 lines (105 loc) · 6.23 KB
/
Dockerfile.final
File metadata and controls
125 lines (105 loc) · 6.23 KB
1
2
3
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
ARG os=debian
ARG version=bookworm
ARG variant=-slim
ARG mirror=http://deb.debian.org/debian
ARG system_ruby=ruby3.1
# =============================================================================
# Merge: ruby-0.x-2.0 through ruby-2.4
# =============================================================================
FROM ${os}:${version}${variant} AS ruby-0.x-2.4
COPY --from=docker.io/rubylang/all-ruby:ruby-0.x-1.6 /build-all-ruby/ /build-all-ruby/
COPY --from=docker.io/rubylang/all-ruby:ruby-1.8.6-1.8.7 /build-all-ruby/ /build-all-ruby/
COPY --from=docker.io/rubylang/all-ruby:ruby-1.9 /build-all-ruby/ /build-all-ruby/
COPY --from=docker.io/rubylang/all-ruby:ruby-2.0 /build-all-ruby/ /build-all-ruby/
COPY --from=docker.io/rubylang/all-ruby:ruby-2.1 /build-all-ruby/ /build-all-ruby/
COPY --from=docker.io/rubylang/all-ruby:ruby-2.2 /build-all-ruby/ /build-all-ruby/
COPY --from=docker.io/rubylang/all-ruby:ruby-2.3 /build-all-ruby/ /build-all-ruby/
COPY --from=docker.io/rubylang/all-ruby:ruby-2.4 /build-all-ruby/ /build-all-ruby/
COPY --from=docker.io/rubylang/all-ruby:ruby-0.x-1.6 /all-ruby/ /all-ruby/
COPY --from=docker.io/rubylang/all-ruby:ruby-1.8.6-1.8.7 /all-ruby/bin/ /all-ruby/bin/
COPY --from=docker.io/rubylang/all-ruby:ruby-1.9 /all-ruby/bin/ /all-ruby/bin/
COPY --from=docker.io/rubylang/all-ruby:ruby-2.0 /all-ruby/bin/ /all-ruby/bin/
COPY --from=docker.io/rubylang/all-ruby:ruby-2.1 /all-ruby/bin/ /all-ruby/bin/
COPY --from=docker.io/rubylang/all-ruby:ruby-2.2 /all-ruby/bin/ /all-ruby/bin/
COPY --from=docker.io/rubylang/all-ruby:ruby-2.3 /all-ruby/bin/ /all-ruby/bin/
COPY --from=docker.io/rubylang/all-ruby:ruby-2.4 /all-ruby/bin/ /all-ruby/bin/
# =============================================================================
# Merge: ruby-2.5 through ruby-3.1
# =============================================================================
FROM ${os}:${version}${variant} AS ruby-2.5-3.1
COPY --from=docker.io/rubylang/all-ruby:ruby-2.5 /build-all-ruby/ /build-all-ruby/
COPY --from=docker.io/rubylang/all-ruby:ruby-2.6 /build-all-ruby/ /build-all-ruby/
COPY --from=docker.io/rubylang/all-ruby:ruby-2.7 /build-all-ruby/ /build-all-ruby/
COPY --from=docker.io/rubylang/all-ruby:ruby-3.0 /build-all-ruby/ /build-all-ruby/
COPY --from=docker.io/rubylang/all-ruby:ruby-3.1 /build-all-ruby/ /build-all-ruby/
COPY --from=docker.io/rubylang/all-ruby:ruby-2.5 /all-ruby/bin/ /all-ruby/bin/
COPY --from=docker.io/rubylang/all-ruby:ruby-2.6 /all-ruby/bin/ /all-ruby/bin/
COPY --from=docker.io/rubylang/all-ruby:ruby-2.7 /all-ruby/bin/ /all-ruby/bin/
COPY --from=docker.io/rubylang/all-ruby:ruby-3.0 /all-ruby/bin/ /all-ruby/bin/
COPY --from=docker.io/rubylang/all-ruby:ruby-3.1 /all-ruby/bin/ /all-ruby/bin/
# =============================================================================
# Merge: ruby-3.2 through ruby-3.5-4.0
# =============================================================================
FROM ${os}:${version}${variant} AS ruby-3.2-4.0
COPY --from=docker.io/rubylang/all-ruby:ruby-3.2 /build-all-ruby/ /build-all-ruby/
COPY --from=docker.io/rubylang/all-ruby:ruby-3.3 /build-all-ruby/ /build-all-ruby/
COPY --from=docker.io/rubylang/all-ruby:ruby-3.4 /build-all-ruby/ /build-all-ruby/
COPY --from=docker.io/rubylang/all-ruby:ruby-3.5-4.0 /build-all-ruby/ /build-all-ruby/
COPY --from=docker.io/rubylang/all-ruby:ruby-3.2 /all-ruby/bin/ /all-ruby/bin/
COPY --from=docker.io/rubylang/all-ruby:ruby-3.3 /all-ruby/bin/ /all-ruby/bin/
COPY --from=docker.io/rubylang/all-ruby:ruby-3.4 /all-ruby/bin/ /all-ruby/bin/
COPY --from=docker.io/rubylang/all-ruby:ruby-3.5-4.0 /all-ruby/bin/ /all-ruby/bin/
# =============================================================================
# Dedup: Combine merged images and deduplicate with rdfind
# =============================================================================
FROM ${os}:${version}${variant} AS dedup
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y rdfind && rm -rf /var/lib/apt/lists/*
COPY --from=docker.io/rubylang/all-ruby:ruby-0.x-2.4 /build-all-ruby/ /build-all-ruby/
COPY --from=docker.io/rubylang/all-ruby:ruby-2.5-3.1 /build-all-ruby/ /build-all-ruby/
COPY --from=docker.io/rubylang/all-ruby:ruby-3.2-4.0 /build-all-ruby/ /build-all-ruby/
RUN rdfind -makehardlinks true -makeresultsfile false /build-all-ruby
# =============================================================================
# Runtime image
# =============================================================================
FROM ${os}:${version}${variant}
ENV DEBIAN_FRONTEND=noninteractive
ARG mirror
ARG version
ARG system_ruby
# gcc is required for mjit of ruby 2.6
RUN dpkg --add-architecture i386 \
&& echo "deb-src ${mirror} ${version} main" > /etc/apt/sources.list.d/deb-src.list \
&& echo 'Dpkg::Use-Pty "0";\nquiet "2";\nAPT::Install-Recommends "0";' > /etc/apt/apt.conf.d/99autopilot \
&& echo 'Acquire::HTTP::No-Cache "True";' > /etc/apt/apt.conf.d/99no-cache \
&& apt-get update \
&& apt-get install \
libc6:i386 \
libffi8:i386 \
libgcc1:i386 \
libgdbm6:i386 \
libncurses5:i386 \
libreadline8:i386 \
libssl3:i386 \
zlib1g:i386 \
libffi8:amd64 \
libgdbm6:amd64 \
libncurses5:amd64 \
libreadline8:amd64 \
libssl3:amd64 \
zlib1g:amd64 \
gcc \
${system_ruby} \
&& rm -rf /var/lib/apt/lists/*
COPY --from=dedup /build-all-ruby/ /build-all-ruby/
COPY --from=docker.io/rubylang/all-ruby:ruby-0.x-2.4 /all-ruby/ /all-ruby/
COPY --from=docker.io/rubylang/all-ruby:ruby-2.5-3.1 /all-ruby/bin/ /all-ruby/bin/
COPY --from=docker.io/rubylang/all-ruby:ruby-3.2-4.0 /all-ruby/bin/ /all-ruby/bin/
# for Ruby 2.4-3.0 (built on bullseye, need libssl1.1/libcrypto1.1)
COPY --from=docker.io/rubylang/all-ruby:ruby-3.0 /usr/lib/x86_64-linux-gnu/libssl.so.1.1 /usr/lib/x86_64-linux-gnu/libssl.so.1.1
COPY --from=docker.io/rubylang/all-ruby:ruby-3.0 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1
COPY --from=docker.io/rubylang/all-ruby:ruby-0.x-1.6 /usr/lib/i386-linux-gnu/libssl.so.1.1 /usr/lib/i386-linux-gnu/libssl.so.1.1
COPY --from=docker.io/rubylang/all-ruby:ruby-0.x-1.6 /usr/lib/i386-linux-gnu/libcrypto.so.1.1 /usr/lib/i386-linux-gnu/libcrypto.so.1.1
COPY lib/* /all-ruby/lib/
COPY all-ruby /all-ruby/
WORKDIR /all-ruby