Skip to content

Commit 6c60f44

Browse files
committed
Move final image stages to Dockerfile.final
1 parent 854a19a commit 6c60f44

3 files changed

Lines changed: 91 additions & 105 deletions

File tree

.github/workflows/build.yml

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@ jobs:
7070
/usr/local/lib/node_modules \
7171
/usr/local/share/chromium \
7272
/usr/local/share/powershell \
73-
/usr/local/share/powershell \
7473
/usr/share/dotnet \
7574
/usr/share/swift
7675
@@ -87,26 +86,6 @@ jobs:
8786
uses: docker/build-push-action@v6
8887
with:
8988
context: .
89+
file: Dockerfile.final
9090
push: true
9191
tags: docker.io/rubylang/all-ruby:latest
92-
build-contexts: |
93-
ruby-0.x-2.0=docker-image://docker.io/rubylang/all-ruby:ruby-0.x-2.0
94-
ruby-1.2-1.8.7=docker-image://docker.io/rubylang/all-ruby:ruby-1.2-1.8.7
95-
ruby-1.9=docker-image://docker.io/rubylang/all-ruby:ruby-1.9
96-
ruby-2.1=docker-image://docker.io/rubylang/all-ruby:ruby-2.1
97-
ruby-2.2=docker-image://docker.io/rubylang/all-ruby:ruby-2.2
98-
ruby-2.3=docker-image://docker.io/rubylang/all-ruby:ruby-2.3
99-
ruby-2.4=docker-image://docker.io/rubylang/all-ruby:ruby-2.4
100-
ruby-2.5=docker-image://docker.io/rubylang/all-ruby:ruby-2.5
101-
ruby-2.6=docker-image://docker.io/rubylang/all-ruby:ruby-2.6
102-
ruby-2.7=docker-image://docker.io/rubylang/all-ruby:ruby-2.7
103-
ruby-3.0=docker-image://docker.io/rubylang/all-ruby:ruby-3.0
104-
ruby-3.1=docker-image://docker.io/rubylang/all-ruby:ruby-3.1
105-
ruby-3.2=docker-image://docker.io/rubylang/all-ruby:ruby-3.2
106-
ruby-3.3=docker-image://docker.io/rubylang/all-ruby:ruby-3.3
107-
ruby-3.4=docker-image://docker.io/rubylang/all-ruby:ruby-3.4
108-
ruby-3.5-4.0=docker-image://docker.io/rubylang/all-ruby:ruby-3.5-4.0
109-
cache-from: |
110-
type=registry,ref=docker.io/rubylang/all-ruby:cache-final
111-
cache-to: |
112-
type=registry,ref=docker.io/rubylang/all-ruby:cache-final,mode=max

Dockerfile

Lines changed: 0 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -297,86 +297,3 @@ RUN rm -rf Rakefile versions/ patch/ DIST build/*/log build/*/ruby*/ \
297297
build/*/man build/*/share/man build/*/share/doc build/*/share/ri && \
298298
rm -f build/*/lib/libruby-static.a build/*/bin/gcc build/*/bin/cc
299299
RUN find /build-all-ruby -type f \( -name ruby -o -name '*.so' \) -exec sh -c 'file $1 | grep -q "not stripped"' - '{}' \; -print0 | xargs -0 strip
300-
301-
# =============================================================================
302-
# Aggregator: Combine all build outputs and deduplicate with rdfind
303-
# (rdfind is already installed in builder-bullseye)
304-
# =============================================================================
305-
FROM builder-bullseye AS aggregator
306-
307-
COPY --from=ruby-0.x-2.0 /build-all-ruby/ /build-all-ruby/
308-
COPY --from=ruby-1.2-1.8.7 /build-all-ruby/ /build-all-ruby/
309-
COPY --from=ruby-1.9 /build-all-ruby/ /build-all-ruby/
310-
COPY --from=ruby-2.1 /build-all-ruby/ /build-all-ruby/
311-
COPY --from=ruby-2.2 /build-all-ruby/ /build-all-ruby/
312-
COPY --from=ruby-2.3 /build-all-ruby/ /build-all-ruby/
313-
COPY --from=ruby-2.4 /build-all-ruby/ /build-all-ruby/
314-
COPY --from=ruby-2.5 /build-all-ruby/ /build-all-ruby/
315-
COPY --from=ruby-2.6 /build-all-ruby/ /build-all-ruby/
316-
COPY --from=ruby-2.7 /build-all-ruby/ /build-all-ruby/
317-
COPY --from=ruby-3.0 /build-all-ruby/ /build-all-ruby/
318-
COPY --from=ruby-3.1 /build-all-ruby/ /build-all-ruby/
319-
COPY --from=ruby-3.2 /build-all-ruby/ /build-all-ruby/
320-
COPY --from=ruby-3.3 /build-all-ruby/ /build-all-ruby/
321-
COPY --from=ruby-3.4 /build-all-ruby/ /build-all-ruby/
322-
COPY --from=ruby-3.5-4.0 /build-all-ruby/ /build-all-ruby/
323-
324-
RUN rdfind -makehardlinks true -makeresultsfile false /build-all-ruby
325-
326-
# =============================================================================
327-
# Final: Runtime image
328-
# =============================================================================
329-
FROM ${os}:${version}${variant}
330-
ENV DEBIAN_FRONTEND=noninteractive
331-
ARG mirror
332-
ARG version
333-
ARG system_ruby
334-
335-
# gcc is required for mjit of ruby 2.6
336-
337-
RUN dpkg --add-architecture i386 \
338-
&& echo "deb-src ${mirror} ${version} main" > /etc/apt/sources.list.d/deb-src.list \
339-
&& echo 'Dpkg::Use-Pty "0";\nquiet "2";\nAPT::Install-Recommends "0";' > /etc/apt/apt.conf.d/99autopilot \
340-
&& echo 'Acquire::HTTP::No-Cache "True";' > /etc/apt/apt.conf.d/99no-cache \
341-
&& apt-get update \
342-
&& apt-get install \
343-
libc6:i386 \
344-
libffi7:i386 \
345-
libgcc1:i386 \
346-
libgdbm6:i386 \
347-
libncurses5:i386 \
348-
libreadline8:i386 \
349-
libssl1.1:i386 \
350-
zlib1g:i386 \
351-
libffi7:amd64 \
352-
libgdbm6:amd64 \
353-
libncurses5:amd64 \
354-
libreadline8:amd64 \
355-
libssl1.1:amd64 \
356-
zlib1g:amd64 \
357-
gcc \
358-
${system_ruby} \
359-
&& rm -rf /var/lib/apt/lists/*
360-
361-
COPY --from=aggregator /build-all-ruby/ /build-all-ruby/
362-
COPY --from=ruby-0.x-2.0 /all-ruby/ /all-ruby/
363-
COPY --from=ruby-1.2-1.8.7 /all-ruby/bin/ /all-ruby/bin/
364-
COPY --from=ruby-1.9 /all-ruby/bin/ /all-ruby/bin/
365-
COPY --from=ruby-2.1 /all-ruby/bin/ /all-ruby/bin/
366-
COPY --from=ruby-2.2 /all-ruby/bin/ /all-ruby/bin/
367-
COPY --from=ruby-2.3 /all-ruby/bin/ /all-ruby/bin/
368-
COPY --from=ruby-2.4 /all-ruby/bin/ /all-ruby/bin/
369-
COPY --from=ruby-2.5 /all-ruby/bin/ /all-ruby/bin/
370-
COPY --from=ruby-2.6 /all-ruby/bin/ /all-ruby/bin/
371-
COPY --from=ruby-2.7 /all-ruby/bin/ /all-ruby/bin/
372-
COPY --from=ruby-3.0 /all-ruby/bin/ /all-ruby/bin/
373-
COPY --from=ruby-3.1 /all-ruby/bin/ /all-ruby/bin/
374-
COPY --from=ruby-3.2 /all-ruby/bin/ /all-ruby/bin/
375-
COPY --from=ruby-3.3 /all-ruby/bin/ /all-ruby/bin/
376-
COPY --from=ruby-3.4 /all-ruby/bin/ /all-ruby/bin/
377-
COPY --from=ruby-3.5-4.0 /all-ruby/bin/ /all-ruby/bin/
378-
379-
COPY lib/* /all-ruby/lib/
380-
COPY all-ruby /all-ruby/
381-
382-
WORKDIR /all-ruby

Dockerfile.final

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
ARG os=debian
2+
ARG version=bullseye
3+
ARG variant=-slim
4+
ARG mirror=http://deb.debian.org/debian
5+
ARG system_ruby=ruby2.7
6+
7+
# =============================================================================
8+
# Aggregator: Combine all build outputs and deduplicate with rdfind
9+
# =============================================================================
10+
FROM ${os}:${version}${variant} AS aggregator
11+
ENV DEBIAN_FRONTEND=noninteractive
12+
13+
RUN apt-get update && apt-get install -y rdfind && rm -rf /var/lib/apt/lists/*
14+
15+
COPY --from=docker.io/rubylang/all-ruby:ruby-0.x-2.0 /build-all-ruby/ /build-all-ruby/
16+
COPY --from=docker.io/rubylang/all-ruby:ruby-1.2-1.8.7 /build-all-ruby/ /build-all-ruby/
17+
COPY --from=docker.io/rubylang/all-ruby:ruby-1.9 /build-all-ruby/ /build-all-ruby/
18+
COPY --from=docker.io/rubylang/all-ruby:ruby-2.1 /build-all-ruby/ /build-all-ruby/
19+
COPY --from=docker.io/rubylang/all-ruby:ruby-2.2 /build-all-ruby/ /build-all-ruby/
20+
COPY --from=docker.io/rubylang/all-ruby:ruby-2.3 /build-all-ruby/ /build-all-ruby/
21+
COPY --from=docker.io/rubylang/all-ruby:ruby-2.4 /build-all-ruby/ /build-all-ruby/
22+
COPY --from=docker.io/rubylang/all-ruby:ruby-2.5 /build-all-ruby/ /build-all-ruby/
23+
COPY --from=docker.io/rubylang/all-ruby:ruby-2.6 /build-all-ruby/ /build-all-ruby/
24+
COPY --from=docker.io/rubylang/all-ruby:ruby-2.7 /build-all-ruby/ /build-all-ruby/
25+
COPY --from=docker.io/rubylang/all-ruby:ruby-3.0 /build-all-ruby/ /build-all-ruby/
26+
COPY --from=docker.io/rubylang/all-ruby:ruby-3.1 /build-all-ruby/ /build-all-ruby/
27+
COPY --from=docker.io/rubylang/all-ruby:ruby-3.2 /build-all-ruby/ /build-all-ruby/
28+
COPY --from=docker.io/rubylang/all-ruby:ruby-3.3 /build-all-ruby/ /build-all-ruby/
29+
COPY --from=docker.io/rubylang/all-ruby:ruby-3.4 /build-all-ruby/ /build-all-ruby/
30+
COPY --from=docker.io/rubylang/all-ruby:ruby-3.5-4.0 /build-all-ruby/ /build-all-ruby/
31+
32+
RUN rdfind -makehardlinks true -makeresultsfile false /build-all-ruby
33+
34+
# =============================================================================
35+
# Final: Runtime image
36+
# =============================================================================
37+
FROM ${os}:${version}${variant}
38+
ENV DEBIAN_FRONTEND=noninteractive
39+
ARG mirror
40+
ARG version
41+
ARG system_ruby
42+
43+
# gcc is required for mjit of ruby 2.6
44+
45+
RUN dpkg --add-architecture i386 \
46+
&& echo "deb-src ${mirror} ${version} main" > /etc/apt/sources.list.d/deb-src.list \
47+
&& echo 'Dpkg::Use-Pty "0";\nquiet "2";\nAPT::Install-Recommends "0";' > /etc/apt/apt.conf.d/99autopilot \
48+
&& echo 'Acquire::HTTP::No-Cache "True";' > /etc/apt/apt.conf.d/99no-cache \
49+
&& apt-get update \
50+
&& apt-get install \
51+
libc6:i386 \
52+
libffi7:i386 \
53+
libgcc1:i386 \
54+
libgdbm6:i386 \
55+
libncurses5:i386 \
56+
libreadline8:i386 \
57+
libssl1.1:i386 \
58+
zlib1g:i386 \
59+
libffi7:amd64 \
60+
libgdbm6:amd64 \
61+
libncurses5:amd64 \
62+
libreadline8:amd64 \
63+
libssl1.1:amd64 \
64+
zlib1g:amd64 \
65+
gcc \
66+
${system_ruby} \
67+
&& rm -rf /var/lib/apt/lists/*
68+
69+
COPY --from=aggregator /build-all-ruby/ /build-all-ruby/
70+
COPY --from=docker.io/rubylang/all-ruby:ruby-0.x-2.0 /all-ruby/ /all-ruby/
71+
COPY --from=docker.io/rubylang/all-ruby:ruby-1.2-1.8.7 /all-ruby/bin/ /all-ruby/bin/
72+
COPY --from=docker.io/rubylang/all-ruby:ruby-1.9 /all-ruby/bin/ /all-ruby/bin/
73+
COPY --from=docker.io/rubylang/all-ruby:ruby-2.1 /all-ruby/bin/ /all-ruby/bin/
74+
COPY --from=docker.io/rubylang/all-ruby:ruby-2.2 /all-ruby/bin/ /all-ruby/bin/
75+
COPY --from=docker.io/rubylang/all-ruby:ruby-2.3 /all-ruby/bin/ /all-ruby/bin/
76+
COPY --from=docker.io/rubylang/all-ruby:ruby-2.4 /all-ruby/bin/ /all-ruby/bin/
77+
COPY --from=docker.io/rubylang/all-ruby:ruby-2.5 /all-ruby/bin/ /all-ruby/bin/
78+
COPY --from=docker.io/rubylang/all-ruby:ruby-2.6 /all-ruby/bin/ /all-ruby/bin/
79+
COPY --from=docker.io/rubylang/all-ruby:ruby-2.7 /all-ruby/bin/ /all-ruby/bin/
80+
COPY --from=docker.io/rubylang/all-ruby:ruby-3.0 /all-ruby/bin/ /all-ruby/bin/
81+
COPY --from=docker.io/rubylang/all-ruby:ruby-3.1 /all-ruby/bin/ /all-ruby/bin/
82+
COPY --from=docker.io/rubylang/all-ruby:ruby-3.2 /all-ruby/bin/ /all-ruby/bin/
83+
COPY --from=docker.io/rubylang/all-ruby:ruby-3.3 /all-ruby/bin/ /all-ruby/bin/
84+
COPY --from=docker.io/rubylang/all-ruby:ruby-3.4 /all-ruby/bin/ /all-ruby/bin/
85+
COPY --from=docker.io/rubylang/all-ruby:ruby-3.5-4.0 /all-ruby/bin/ /all-ruby/bin/
86+
87+
COPY lib/* /all-ruby/lib/
88+
COPY all-ruby /all-ruby/
89+
90+
WORKDIR /all-ruby

0 commit comments

Comments
 (0)