-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
136 lines (118 loc) · 6.1 KB
/
Dockerfile
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
126
127
128
129
130
131
132
133
134
135
136
FROM ubuntu:21.04 as asdf-base
ARG DEBIAN_FRONTEND=noninteractive
ENV ASDF_DIR "/asdf"
ENV ASDF_DATA_DIR $ASDF_DIR
ENV PATH $ASDF_DIR/shims:$ASDF_DIR/bin:$PATH
RUN apt update \
&& apt install -y --no-install-recommends \
ca-certificates \
curl \
git \
wget \
&& git clone https://github.com/asdf-vm/asdf.git $ASDF_DIR \
&& cd $ASDF_DIR \
&& git checkout "$(git describe --abbrev=0 --tags)" \
&& apt-get clean \
&& apt-get autoremove -y \
&& rm -rf /var/lib/apt/lists/*
FROM asdf-base as asdf-builder
ARG DEBIAN_FRONTEND=noninteractive
RUN apt update \
&& apt install -y --no-install-recommends \
build-essential \
coreutils \
dirmngr \
gpg \
libbz2-dev \
libffi-dev \
liblzma-dev \
libncurses5-dev \
libreadline-dev \
libsqlite3-dev \
libssl-dev \
libxml2-dev \
libxmlsec1-dev \
libxtst6 \
llvm \
locales \
tk-dev \
xz-utils \
zlib1g-dev \
&& apt-get clean \
&& apt-get autoremove -y \
&& rm -rf /var/lib/apt/lists/*
FROM asdf-builder as asdf-python
ARG DEBIAN_FRONTEND=noninteractive
RUN sed -e '/^# deb/ s/# //' -i /etc/apt/sources.list \
&& apt-get update \
&& apt build-dep -o APT::Get::Build-Dep-Automatic=true -y --no-install-recommends \
python3 \
&& asdf plugin-add python \
&& asdf install python latest \
&& asdf global python latest \
&& asdf install python latest:3.8 \
&& apt-get clean \
&& apt-get autoremove -y \
&& rm -rf /var/lib/apt/lists/*
FROM asdf-builder as asdf-nodejs
RUN asdf plugin-add nodejs \
&& asdf install nodejs latest:16 \
&& asdf global nodejs $(asdf latest nodejs 16)
FROM asdf-builder as asdf-golang
RUN asdf plugin-add golang \
&& asdf install golang latest \
&& asdf global golang latest
FROM asdf-builder as asdf-ruby
RUN asdf plugin-add ruby \
&& asdf install ruby latest \
&& asdf global ruby latest
FROM asdf-builder as asdf-java
RUN asdf plugin-add java \
&& asdf install java latest:adoptopenjdk-11 \
&& asdf global java $(asdf latest java adoptopenjdk-11)
# && asdf plugin-add ant \
# && asdf install ant latest \
# && asdf global ant latest \
# && asdf plugin-add maven \
# && asdf install maven latest \
# && asdf global maven latest \
# && asdf plugin-add gradle \
# && asdf install gradle latest \
# && asdf global gradle latest \
# FROM asdf-builder as asdf-direnv
# RUN asdf plugin-add direnv \
# && asdf install direnv latest \
# && asdf global direnv latest \
FROM asdf-builder as asdf-adr-tools
RUN asdf plugin-add adr-tools \
&& asdf install adr-tools latest \
&& asdf global adr-tools latest
FROM ubuntu:21.04
ENV ASDF_DIR "/asdf"
ENV ASDF_DATA_DIR $ASDF_DIR
ENV PATH $ASDF_DIR/shims:$ASDF_DIR/bin:$PATH
COPY --from=asdf-base /asdf /asdf
COPY --from=asdf-python /asdf/plugins/python /asdf/plugins/python
COPY --from=asdf-python /asdf/installs/python /asdf/installs/python
COPY --from=asdf-python /root/.tool-versions /root/.tool-versions-python
COPY --from=asdf-nodejs /asdf/plugins/nodejs /asdf/plugins/nodejs
COPY --from=asdf-nodejs /asdf/installs/nodejs /asdf/installs/nodejs
COPY --from=asdf-nodejs /root/.tool-versions /root/.tool-versions-nodejs
COPY --from=asdf-golang /asdf/plugins/golang /asdf/plugins/golang
COPY --from=asdf-golang /asdf/installs/golang /asdf/installs/golang
COPY --from=asdf-golang /root/.tool-versions /root/.tool-versions-golang
COPY --from=asdf-ruby /asdf/plugins/ruby /asdf/plugins/ruby
COPY --from=asdf-ruby /asdf/installs/ruby /asdf/installs/ruby
COPY --from=asdf-ruby /root/.tool-versions /root/.tool-versions-ruby
COPY --from=asdf-java /asdf/plugins/java /asdf/plugins/java
COPY --from=asdf-java /asdf/installs/java /asdf/installs/java
# COPY --from=asdf-java /asdf/plugins/ant /asdf/plugins/ant
# COPY --from=asdf-java /asdf/installs/ant /asdf/installs/ant
COPY --from=asdf-java /root/.tool-versions /root/.tool-versions-java
COPY --from=asdf-adr-tools /asdf/plugins/adr-tools /asdf/plugins/adr-tools
COPY --from=asdf-adr-tools /asdf/installs/adr-tools /asdf/installs/adr-tools
COPY --from=asdf-adr-tools /root/.tool-versions /root/.tool-versions-adr-tools
RUN cat /root/.tool-versions-* > /root/.tool-versions \
&& rm -f /root/.tool-versions-* \
&& asdf reshim
CMD ["asdf"]