Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ This repository contains example images for use with [Coder](https://coder.com/d
utilities for a Coder workspace to bootstrap successfully.
- `example-golang`: Contains Go development tools.
- `example-java`: Contains Java development tools.
- `example-java-sdkman`: Contains Java development tools, managed by SDKMAN!.
- `example-node`: Contains Node.js development tools.
- `example-desktop`: Contains a desktop environment accessible via web browser.

Expand Down
4 changes: 2 additions & 2 deletions dprint.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"deprecated/*"
],
"plugins": [
"https://plugins.dprint.dev/markdown-0.17.0.wasm",
"https://plugins.dprint.dev/dockerfile-0.3.0.wasm"
"https://plugins.dprint.dev/markdown-0.19.0.wasm",
"https://plugins.dprint.dev/dockerfile-0.3.3.wasm"
]
}
20 changes: 20 additions & 0 deletions images/java-sdkman/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Java

[![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)

## Description

Wraps [enterprise-base](../base/README.md) with the basics for Java development.

> **Note:** This image does not contain IntelliJ. For an example of how to
> install IntelliJ, see [enterprise-intellij](../../deprecated/intellij/README.md)

Uses [SDKMAN!](https://sdkman.io/) for management of SDKs and JDKs.

Java, Maven, and Gradle are installed by default, versions can be changed or new packages added as needed.

See [SDKMAN! Docs](https://sdkman.io/usage) for instructions on usage.

## How To Use

This image is ready for direct use within Coder Enterprise.
32 changes: 32 additions & 0 deletions images/java-sdkman/ubuntu.Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
FROM codercom/enterprise-base:ubuntu

ARG DEBIAN_FRONTEND="noninteractive"
ARG SDKMAN_SHA512="a8fc6a336d31f2e4980cfe39ee9f11a0f2ee70bc721094b7ea63b953fd1675474765a4e273d6575ea207aa59c15f4fe867e963c0c47580f2131edc2ae8d4fd34"

ENV SDKMAN_DIR="/home/coder/.sdkman" \
JAVA_VERSION="21.0.8-tem" \
GRADLE_VERSION="8.14.3" \
MAVEN_VERSION="3.9.11" \
MAVEN_CONFIG="/home/coder/.m2"

USER root

RUN apt-get update -qq && \
apt-get install -qq -y \
--no-install-recommends \
--no-install-suggests \
zip && \
rm -rf /var/lib/apt/lists/*

USER coder

RUN curl -fsSL "https://get.sdkman.io?ci=true" -o /tmp/install_sdkman.sh && \
echo "${SDKMAN_SHA512} /tmp/install_sdkman.sh" | sha512sum -c - && \
bash /tmp/install_sdkman.sh && \
rm /tmp/install_sdkman.sh && \
bash -c "source ${SDKMAN_DIR}/bin/sdkman-init.sh && \
sdk install java ${JAVA_VERSION} && \
sdk install gradle ${GRADLE_VERSION} && \
sdk install maven ${MAVEN_VERSION} && \
sdk flush archives && \
sdk flush temp"
69 changes: 34 additions & 35 deletions images/java/ubuntu.Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,48 +3,47 @@ FROM codercom/enterprise-base:ubuntu
# Run everything as root
USER root

# Install JDK (OpenJDK 8)
RUN DEBIAN_FRONTEND="noninteractive" apt-get update -y && \
apt-get install -y openjdk-11-jdk
ENV JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
ENV PATH=$PATH:$JAVA_HOME/bin
ENV DEBIAN_FRONTEND="noninteractive" \
JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 \
GRADLE_HOME=/usr/bin/gradle \
MAVEN_HOME=/usr/share/maven \
MAVEN_CONFIG="/home/coder/.m2"

# Install Maven
ARG MAVEN_VERSION=3.9.11
ARG MAVEN_SHA512=bcfe4fe305c962ace56ac7b5fc7a08b87d5abd8b7e89027ab251069faebee516b0ded8961445d6d91ec1985dfe30f8153268843c89aa392733d1a3ec956c9978

ENV MAVEN_HOME=/usr/share/maven
ENV MAVEN_CONFIG="/home/coder/.m2"

RUN mkdir -p $MAVEN_HOME $MAVEN_HOME/ref \
&& echo "Downloading maven" \
&& 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 \
&& echo "Checking downloaded file hash" \
&& echo "${MAVEN_SHA512} /tmp/apache-maven.tar.gz" | sha512sum -c - \
&& echo "Unzipping maven" \
&& tar -xzf /tmp/apache-maven.tar.gz -C $MAVEN_HOME --strip-components=1 \
&& echo "Cleaning and setting links" \
&& rm -f /tmp/apache-maven.tar.gz \
&& ln -s $MAVEN_HOME/bin/mvn /usr/bin/mvn

# Install Gradle
ENV GRADLE_VERSION=6.7
ARG GRADLE_VERSION=6.7
ARG GRADLE_SHA512=d495bc65379d2a854d2cca843bd2eeb94f381e5a7dcae89e6ceb6ef4c5835524932313e7f30d7a875d5330add37a5fe23447dc3b55b4d95dffffa870c0b24493

ENV GRADLE_HOME=/usr/bin/gradle
# Install JDK (OpenJDK 8)
RUN apt-get update -qq && \
apt-get install -y openjdk-11-jdk && \
rm -rf /var/lib/apt/lists/*

RUN mkdir -p /usr/share/gradle /usr/share/gradle/ref \
&& echo "Downloading gradle" \
&& curl -fsSL -o /tmp/gradle.zip https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip \
&& echo "Checking downloaded file hash" \
&& echo "${GRADLE_SHA512} /tmp/gradle.zip" | sha512sum -c - \
&& echo "Unziping gradle" \
&& unzip -d /usr/share/gradle /tmp/gradle.zip \
&& echo "Cleaning and setting links" \
&& rm -f /tmp/gradle.zip \
&& ln -s /usr/share/gradle/gradle-${GRADLE_VERSION} /usr/bin/gradle
# Install Maven
RUN mkdir -p $MAVEN_HOME $MAVEN_HOME/ref && \
echo "Downloading Maven" && \
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 && \
echo "Checking downloaded file hash" && \
echo "${MAVEN_SHA512} /tmp/apache-maven.tar.gz" | sha512sum -c - && \
echo "Unzipping Maven" && \
tar -xzf /tmp/apache-maven.tar.gz -C $MAVEN_HOME --strip-components=1 && \
echo "Cleaning and setting links" && \
rm -f /tmp/apache-maven.tar.gz && \
ln -s $MAVEN_HOME/bin/mvn /usr/bin/mvn

ENV PATH=$PATH:$GRADLE_HOME/bin
# Install Gradle
RUN mkdir -p /usr/share/gradle /usr/share/gradle/ref && \
echo "Downloading Gradle" && \
curl -fsSL -o /tmp/gradle.zip https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-bin.zip && \
echo "Checking downloaded file hash" && \
echo "${GRADLE_SHA512} /tmp/gradle.zip" | sha512sum -c - && \
echo "Unzipping Gradle" && \
unzip -d /usr/share/gradle /tmp/gradle.zip && \
echo "Cleaning and setting links" && \
rm -f /tmp/gradle.zip && \
ln -s /usr/share/gradle/gradle-${GRADLE_VERSION} /usr/bin/gradle

ENV PATH=$PATH:$JAVA_HOME/bin:$GRADLE_HOME/bin

# Set back to coder user
USER coder
15 changes: 12 additions & 3 deletions scripts/build_images.sh
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ done

docker_flags=()

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

if [ ! -f "$image_path" ]; then
if [ $QUIET = false ]; then
if [ "$QUIET" = false ]; then
echo "Path '$image_path' does not exist; skipping" >&2
fi
continue
fi

run_trace $DRY_RUN depot build --project "gb3p8xrshk" --load --platform linux/arm64,linux/amd64,linux/arm/v7 --save --metadata-file="build_${image}.json" \
if [[ "$image" == "java-sdkman" ]]; then
platforms="linux/arm64,linux/amd64"
fi

run_trace $DRY_RUN depot build \
--load \
--platform "$platforms" \
--save \
--metadata-file="build_${image}.json" \
"${docker_flags[@]}" \
"$image_dir" \
--file="$image_path" \
Expand Down
1 change: 1 addition & 0 deletions scripts/images.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ IMAGES=(
"minimal"
"golang"
"java"
"java-sdkman"
"node"
"desktop"
)
Loading