Skip to content

Commit 0588c97

Browse files
committed
Added new image java-sdkman. Restored java image. Updated build scripts to only build amd64 and arm64 for java-sdkman
1 parent 94821fb commit 0588c97

File tree

5 files changed

+111
-41
lines changed

5 files changed

+111
-41
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, and 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+
ARG 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: 46 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,50 @@
11
FROM codercom/enterprise-base:ubuntu
22

3-
ARG DEBIAN_FRONTEND="noninteractive"
4-
ARG SDKMAN_SHA512="a8fc6a336d31f2e4980cfe39ee9f11a0f2ee70bc721094b7ea63b953fd1675474765a4e273d6575ea207aa59c15f4fe867e963c0c47580f2131edc2ae8d4fd34"
5-
6-
ARG STRING='${SDKMAN_SERVICE}/broker/download/native/install/${SDKMAN_NATIVE_VERSION}/${SDKMAN_PLATFORM}'
7-
ARG REPLACE='https://github.com/sdkman/sdkman-cli-native/releases/download/v${SDKMAN_NATIVE_VERSION}/sdkman-cli-native-${SDKMAN_NATIVE_VERSION}-aarch64-unknown-linux-gnu.zip'
8-
9-
ENV SDKMAN_DIR="/home/coder/.sdkman" \
10-
JAVA_VERSION="21.0.8-librca" \
11-
GRADLE_VERSION="8.14.3" \
12-
MAVEN_VERSION="3.9.11" \
13-
MAVEN_CONFIG="/home/coder/.m2"
14-
3+
# Run everything as root
154
USER root
165

17-
RUN apt-get update -qq && \
18-
apt-get install -qq -y \
19-
--no-install-recommends \
20-
--no-install-suggests \
21-
zip && \
22-
rm -rf /var/lib/apt/lists/*
23-
24-
USER coder
25-
26-
RUN curl -fsSL "https://get.sdkman.io?ci=true" -o /tmp/install_sdkman.sh && \
27-
echo "${SDKMAN_SHA512} /tmp/install_sdkman.sh" | sha512sum -c - && \
28-
if uname -m | grep -qE '^armv[0-9]l$'; then \
29-
echo "Updating SDKMAN Native CLI download URI"; \
30-
sed -i "s|${STRING}|${REPLACE}|g" /tmp/install_sdkman.sh; \
31-
fi && \
32-
bash /tmp/install_sdkman.sh && \
33-
rm /tmp/install_sdkman.sh && \
34-
bash -c "source ${SDKMAN_DIR}/bin/sdkman-init.sh && \
35-
sdk install java ${JAVA_VERSION} && \
36-
sdk install gradle ${GRADLE_VERSION} && \
37-
sdk install maven ${MAVEN_VERSION} && \
38-
sdk flush archives && \
39-
sdk flush temp"
40-
41-
### Debugging
42-
RUN bash -c "source ${SDKMAN_DIR}/bin/sdkman-init.sh && java --version; mvn -v; gradle -v"
6+
# 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
11+
12+
# Install Maven
13+
ARG MAVEN_VERSION=3.9.10
14+
ARG MAVEN_SHA512=4ef617e421695192a3e9a53b3530d803baf31f4269b26f9ab6863452d833da5530a4d04ed08c36490ad0f141b55304bceed58dbf44821153d94ae9abf34d0e1b
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
29+
30+
# 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
48+
49+
# Set back to coder user
50+
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)