Skip to content

Commit 490d548

Browse files
committed
Added new image java-sdkman. Updated build scripts to only build amd64 and arm64 for java-sdkman. Refactored java image to resolve breakage when new Maven is released and to improve layer caching.
1 parent 2ce8cd8 commit 490d548

File tree

5 files changed

+101
-40
lines changed

5 files changed

+101
-40
lines changed

images/java-sdkman/README.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Java
2+
3+
[![Docker Pulls](https://img.shields.io/docker/pulls/codercom/enterprise-java-sdkman?label=codercom%2Fenterprise-java-sdkman)](https://hub.docker.com/r/codercom/enterprise-java-sdkman)
4+
5+
## Description
6+
7+
Wraps [enterprise-base](../base/README.md) with the basics for Java development.
8+
9+
> **Note:** This image does not contain IntelliJ. For an example of how to
10+
> install IntelliJ, see [enterprise-intellij](../../deprecated/intellij/README.md)
11+
12+
Uses [SDKMAN!](https://sdkman.io/) for management of SDKs and JDKs.
13+
14+
Java, Maven, and Gradle are installed by default, versions can be changed or new packages added as needed.
15+
16+
See [SDKMAN! Docs](https://sdkman.io/usage) for instructions on usage.
17+
18+
## How To Use
19+
20+
This image is ready for direct use within Coder Enterprise.
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
FROM codercom/enterprise-base:ubuntu
2+
3+
ARG DEBIAN_FRONTEND="noninteractive" \
4+
SDKMAN_SHA512="a8fc6a336d31f2e4980cfe39ee9f11a0f2ee70bc721094b7ea63b953fd1675474765a4e273d6575ea207aa59c15f4fe867e963c0c47580f2131edc2ae8d4fd34"
5+
6+
ENV SDKMAN_DIR="/home/coder/.sdkman" \
7+
JAVA_VERSION="21.0.8-tem" \
8+
GRADLE_VERSION="8.14.3" \
9+
MAVEN_VERSION="3.9.11" \
10+
MAVEN_CONFIG="/home/coder/.m2"
11+
12+
USER root
13+
14+
RUN apt-get update -qq && \
15+
apt-get install -qq -y \
16+
--no-install-recommends \
17+
--no-install-suggests \
18+
zip && \
19+
rm -rf /var/lib/apt/lists/*
20+
21+
USER coder
22+
23+
RUN curl -fsSL "https://get.sdkman.io?ci=true" -o /tmp/install_sdkman.sh && \
24+
echo "${SDKMAN_SHA512} /tmp/install_sdkman.sh" | sha512sum -c - && \
25+
bash /tmp/install_sdkman.sh && \
26+
rm /tmp/install_sdkman.sh && \
27+
bash -c "source ${SDKMAN_DIR}/bin/sdkman-init.sh && \
28+
sdk install java ${JAVA_VERSION} && \
29+
sdk install gradle ${GRADLE_VERSION} && \
30+
sdk install maven ${MAVEN_VERSION} && \
31+
sdk flush archives && \
32+
sdk flush temp"

images/java/ubuntu.Dockerfile

Lines changed: 36 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -3,48 +3,47 @@ FROM codercom/enterprise-base:ubuntu
33
# Run everything as root
44
USER root
55

6+
ENV DEBIAN_FRONTEND="noninteractive" \
7+
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 \
8+
GRADLE_HOME=/usr/bin/gradle \
9+
MAVEN_HOME=/usr/share/maven \
10+
MAVEN_CONFIG="/home/coder/.m2"
11+
12+
ARG MAVEN_VERSION=3.9.11 \
13+
MAVEN_SHA512=bcfe4fe305c962ace56ac7b5fc7a08b87d5abd8b7e89027ab251069faebee516b0ded8961445d6d91ec1985dfe30f8153268843c89aa392733d1a3ec956c9978 \
14+
GRADLE_VERSION=6.7 \
15+
GRADLE_SHA512=d495bc65379d2a854d2cca843bd2eeb94f381e5a7dcae89e6ceb6ef4c5835524932313e7f30d7a875d5330add37a5fe23447dc3b55b4d95dffffa870c0b24493
16+
617
# Install JDK (OpenJDK 8)
7-
RUN DEBIAN_FRONTEND="noninteractive" apt-get update -y && \
8-
apt-get install -y openjdk-11-jdk
9-
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
10-
ENV PATH=$PATH:$JAVA_HOME/bin
18+
RUN apt-get update -qq && \
19+
apt-get install -y openjdk-11-jdk && \
20+
rm -rf /var/lib/apt/lists/*
1121

1222
# Install Maven
13-
ARG MAVEN_VERSION=3.9.11
14-
ARG MAVEN_SHA512=bcfe4fe305c962ace56ac7b5fc7a08b87d5abd8b7e89027ab251069faebee516b0ded8961445d6d91ec1985dfe30f8153268843c89aa392733d1a3ec956c9978
15-
16-
ENV MAVEN_HOME=/usr/share/maven
17-
ENV MAVEN_CONFIG="/home/coder/.m2"
18-
19-
RUN mkdir -p $MAVEN_HOME $MAVEN_HOME/ref \
20-
&& echo "Downloading maven" \
21-
&& curl -fsSL -o /tmp/apache-maven.tar.gz https://dlcdn.apache.org/maven/maven-3/${MAVEN_VERSION}/binaries/apache-maven-${MAVEN_VERSION}-bin.tar.gz \
22-
&& echo "Checking downloaded file hash" \
23-
&& echo "${MAVEN_SHA512} /tmp/apache-maven.tar.gz" | sha512sum -c - \
24-
&& echo "Unzipping maven" \
25-
&& tar -xzf /tmp/apache-maven.tar.gz -C $MAVEN_HOME --strip-components=1 \
26-
&& echo "Cleaning and setting links" \
27-
&& rm -f /tmp/apache-maven.tar.gz \
28-
&& ln -s $MAVEN_HOME/bin/mvn /usr/bin/mvn
23+
RUN mkdir -p $MAVEN_HOME $MAVEN_HOME/ref && \
24+
echo "Downloading Maven" && \
25+
curl -fsSL -o /tmp/apache-maven.tar.gz https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/${MAVEN_VERSION}/apache-maven-${MAVEN_VERSION}-bin.tar.gz && \
26+
echo "Checking downloaded file hash" && \
27+
echo "${MAVEN_SHA512} /tmp/apache-maven.tar.gz" | sha512sum -c - && \
28+
echo "Unzipping Maven" && \
29+
tar -xzf /tmp/apache-maven.tar.gz -C $MAVEN_HOME --strip-components=1 && \
30+
echo "Cleaning and setting links" && \
31+
rm -f /tmp/apache-maven.tar.gz && \
32+
ln -s $MAVEN_HOME/bin/mvn /usr/bin/mvn
2933

3034
# Install Gradle
31-
ENV GRADLE_VERSION=6.7
32-
ARG GRADLE_SHA512=d495bc65379d2a854d2cca843bd2eeb94f381e5a7dcae89e6ceb6ef4c5835524932313e7f30d7a875d5330add37a5fe23447dc3b55b4d95dffffa870c0b24493
33-
34-
ENV GRADLE_HOME=/usr/bin/gradle
35-
36-
RUN mkdir -p /usr/share/gradle /usr/share/gradle/ref \
37-
&& echo "Downloading gradle" \
38-
&& curl -fsSL -o /tmp/gradle.zip https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip \
39-
&& echo "Checking downloaded file hash" \
40-
&& echo "${GRADLE_SHA512} /tmp/gradle.zip" | sha512sum -c - \
41-
&& echo "Unziping gradle" \
42-
&& unzip -d /usr/share/gradle /tmp/gradle.zip \
43-
&& echo "Cleaning and setting links" \
44-
&& rm -f /tmp/gradle.zip \
45-
&& ln -s /usr/share/gradle/gradle-${GRADLE_VERSION} /usr/bin/gradle
46-
47-
ENV PATH=$PATH:$GRADLE_HOME/bin
35+
RUN mkdir -p /usr/share/gradle /usr/share/gradle/ref && \
36+
echo "Downloading Gradle" && \
37+
curl -fsSL -o /tmp/gradle.zip https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip && \
38+
echo "Checking downloaded file hash" && \
39+
echo "${GRADLE_SHA512} /tmp/gradle.zip" | sha512sum -c - && \
40+
echo "Unzipping Gradle" && \
41+
unzip -d /usr/share/gradle /tmp/gradle.zip && \
42+
echo "Cleaning and setting links" && \
43+
rm -f /tmp/gradle.zip && \
44+
ln -s /usr/share/gradle/gradle-${GRADLE_VERSION} /usr/bin/gradle
45+
46+
ENV PATH=$PATH:$JAVA_HOME/bin:$GRADLE_HOME/bin
4847

4948
# Set back to coder user
5049
USER coder

scripts/build_images.sh

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ done
8282

8383
docker_flags=()
8484

85-
if [ $QUIET = true ]; then
85+
if [ "$QUIET" = true ]; then
8686
docker_flags+=(
8787
--quiet
8888
)
@@ -94,15 +94,24 @@ for image in "${IMAGES[@]}"; do
9494
enterprise_image_ref="codercom/enterprise-$image:$TAG"
9595
example_image_ref="codercom/example-$image:$TAG"
9696
image_path="$image_dir/$image_file"
97+
platforms="linux/arm64,linux/amd64,linux/arm/v7"
9798

9899
if [ ! -f "$image_path" ]; then
99-
if [ $QUIET = false ]; then
100+
if [ "$QUIET" = false ]; then
100101
echo "Path '$image_path' does not exist; skipping" >&2
101102
fi
102103
continue
103104
fi
104105

105-
run_trace $DRY_RUN depot build --project "gb3p8xrshk" --load --platform linux/arm64,linux/amd64,linux/arm/v7 --save --metadata-file="build_${image}.json" \
106+
if [[ "$image" == "java-sdkman" ]]; then
107+
platforms="linux/arm64,linux/amd64"
108+
fi
109+
110+
run_trace $DRY_RUN depot build \
111+
--load \
112+
--platform "$platforms" \
113+
--save \
114+
--metadata-file="build_${image}.json" \
106115
"${docker_flags[@]}" \
107116
"$image_dir" \
108117
--file="$image_path" \

scripts/images.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ IMAGES=(
77
"minimal"
88
"golang"
99
"java"
10+
"java-sdkman"
1011
"node"
1112
"desktop"
1213
)

0 commit comments

Comments
 (0)