-
Notifications
You must be signed in to change notification settings - Fork 74
Expand file tree
/
Copy pathDockerfile
More file actions
134 lines (123 loc) · 4.22 KB
/
Dockerfile
File metadata and controls
134 lines (123 loc) · 4.22 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
126
127
128
129
130
131
132
133
134
FROM ubuntu:noble
CMD ["gradle"]
ENV GRADLE_HOME=/opt/gradle
RUN set -o errexit -o nounset \
&& echo "Renaming ubuntu user and group to gradle" \
&& groupmod --new-name gradle ubuntu \
&& mkdir /home/gradle \
&& usermod --login gradle --home /home/gradle --groups gradle ubuntu \
&& chown gradle /home/gradle \
&& mkdir /home/gradle/.gradle \
&& chown --recursive gradle:gradle /home/gradle \
&& chmod --recursive o+rwx /home/gradle \
\
&& echo "Symlinking root Gradle cache to gradle Gradle cache" \
&& ln --symbolic /home/gradle/.gradle /root/.gradle
VOLUME /home/gradle/.gradle
WORKDIR /home/gradle
RUN set -o errexit -o nounset \
&& export DEBIAN_FRONTEND=noninteractive \
&& apt-get update \
&& apt-get install --yes --no-install-recommends \
# common utilities
make \
curl \
wget \
tar \
\
# Gradle & Dockerfile dependencies
binutils \
ca-certificates \
fontconfig \
locales \
p11-kit \
tzdata \
unzip \
\
# build dependencies
gcc \
libc-dev \
libz-dev \
zlib1g-dev \
\
# VCSes
brz \
git \
git-lfs \
mercurial \
openssh-client \
subversion \
&& rm --recursive --force /var/lib/apt/lists/* \
\
&& echo "Testing common utilities" \
&& which awk \
&& which curl \
&& which cut \
&& which grep \
&& which gunzip \
&& which sha256sum \
&& which sed \
&& which tar \
&& which tr \
&& which unzip \
&& which wget \
\
&& echo "Testing VCSes" \
&& which brz \
&& which git \
&& which git-lfs \
&& which hg \
&& which svn
ENV JAVA_HOME=/opt/java/graalvm
ENV JAVA_VERSION=17.0.9
RUN set -o errexit -o nounset \
&& mkdir /opt/java \
\
&& echo "Downloading GraalVM" \
&& GRAALVM_AMD64_DOWNLOAD_SHA256=e47ba7229cef02393e19d5b8f46f7f1cab4829dd17bfe84d5431fc8ff0e22a96 \
&& GRAALVM_AARCH64_DOWNLOAD_SHA256=c3281b21f5220c2f76cf6fa0d646bc42e2d729af2c022bb06e557a613ba16102 \
&& ARCHITECTURE=$(dpkg --print-architecture) \
&& if [ "${ARCHITECTURE}" = "amd64" ]; then GRAALVM_ARCHITECTURE=linux-x64; fi \
&& if [ "${ARCHITECTURE}" = "arm64" ]; then GRAALVM_ARCHITECTURE=linux-aarch64; fi \
&& GRAALVM_PKG=https://github.com/graalvm/graalvm-ce-builds/releases/download/jdk-${JAVA_VERSION}/graalvm-community-jdk-${JAVA_VERSION}_${GRAALVM_ARCHITECTURE}_bin.tar.gz \
&& wget --no-verbose --output-document=graalvm.tar.gz "${GRAALVM_PKG}" \
\
&& echo "Checking GraalVM download hash" \
&& if [ "${ARCHITECTURE}" = "amd64" ]; then GRAALVM_DOWNLOAD_SHA256="${GRAALVM_AMD64_DOWNLOAD_SHA256}"; fi \
&& if [ "${ARCHITECTURE}" = "arm64" ]; then GRAALVM_DOWNLOAD_SHA256="${GRAALVM_AARCH64_DOWNLOAD_SHA256}"; fi \
&& echo "${GRAALVM_DOWNLOAD_SHA256} *graalvm.tar.gz" | sha256sum --check - \
\
&& echo "Installing GraalVM" \
&& tar --extract --gunzip --file graalvm.tar.gz \
&& rm graalvm.tar.gz \
&& mv graalvm-* "${JAVA_HOME}" \
&& for bin in "$JAVA_HOME/bin/"*; do \
base="$(basename "$bin")"; \
[ ! -e "/usr/bin/$base" ]; \
update-alternatives --install "/usr/bin/${base}" "${base}" "${bin}" 1; \
done \
\
&& echo "Testing GraalVM installation" \
&& java --version \
&& javac --version \
&& gu --version \
&& native-image --version
ENV GRADLE_VERSION=9.5.0
ARG GRADLE_DOWNLOAD_SHA256=553c78f50dafcd54d65b9a444649057857469edf836431389695608536d6b746
RUN set -o errexit -o nounset \
&& echo "Downloading Gradle" \
&& wget --no-verbose --output-document=gradle.zip "https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip" \
\
&& echo "Checking Gradle download hash" \
&& echo "${GRADLE_DOWNLOAD_SHA256} *gradle.zip" | sha256sum --check - \
\
&& echo "Installing Gradle" \
&& unzip gradle.zip \
&& rm gradle.zip \
&& mv "gradle-${GRADLE_VERSION}" "${GRADLE_HOME}/" \
&& ln --symbolic "${GRADLE_HOME}/bin/gradle" /usr/bin/gradle
USER gradle
RUN set -o errexit -o nounset \
&& echo "Testing Gradle installation" \
&& gradle --stacktrace --debug --version
USER root