Skip to content

Commit

Permalink
Add amazon-corretto base image (21, 17) (#207)
Browse files Browse the repository at this point in the history
  • Loading branch information
kijuky authored Nov 14, 2024
1 parent b28c743 commit 985c682
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 1 deletion.
13 changes: 12 additions & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,9 @@ jobs:
'eclipse-temurin-17.0.13_11',
'eclipse-temurin-alpine-23.0.1_11',
'eclipse-temurin-alpine-21.0.5_11',
'eclipse-temurin-alpine-17.0.13_11'
'eclipse-temurin-alpine-17.0.13_11',
'amazoncorretto-al2023-21.0.5',
'amazoncorretto-al2023-17.0.13'
]
include:
# https://github.com/graalvm/container/pkgs/container/graalvm-community
Expand Down Expand Up @@ -72,6 +74,15 @@ jobs:
dockerfile: 'alpine.Dockerfile'
baseImageTag: '17.0.13_11-jdk-alpine'
platforms: 'linux/amd64'
# https://hub.docker.com/_/amazoncorretto/tags
- javaTag: 'amazoncorretto-al2023-21.0.5'
dockerContext: 'amazoncorretto'
baseImageTag: '21.0.5-al2023'
platforms: 'linux/amd64'
- javaTag: 'amazoncorretto-al2023-17.0.13'
dockerContext: 'amazoncorretto'
baseImageTag: '17.0.13-al2023'
platforms: 'linux/amd64'
exclude:
# https://github.com/VirtusLab/scala-cli/issues/3130
- scalaVersion: '3.5.2'
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ Images are updated daily
Available JDK base images:
* eclipse-temurin
* graalvm-ce
* amazoncorretto

## Where to get images

Expand Down
90 changes: 90 additions & 0 deletions amazoncorretto/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
#
# Scala and sbt Dockerfile
#
# https://github.com/sbt/docker-sbt
#

# Pull base image
ARG BASE_IMAGE_TAG
FROM amazoncorretto:${BASE_IMAGE_TAG:-21.0.5-al2023}

# Env variables
ARG SCALA_VERSION
ENV SCALA_VERSION=${SCALA_VERSION:-3.3.4}
ARG SBT_VERSION
ENV SBT_VERSION=${SBT_VERSION:-1.10.5}
ARG USER_ID
ENV USER_ID=${USER_ID:-1001}
ARG GROUP_ID
ENV GROUP_ID=${GROUP_ID:-1001}

# Install git and rpm for sbt-native-packager (see https://github.com/sbt/docker-sbt/pull/114)
RUN \
dnf -y update && \
dnf -y install tar gzip procps git rpm && \
rm -rf /var/cache/dnf/* && \
dnf clean all

# Install sbt
RUN \
curl -fsL --show-error "https://github.com/sbt/sbt/releases/download/v$SBT_VERSION/sbt-$SBT_VERSION.tgz" | tar xfz - -C /usr/share && \
chown -R root:root /usr/share/sbt && \
chmod -R 755 /usr/share/sbt && \
ln -s /usr/share/sbt/bin/sbt /usr/local/bin/sbt

# Install Scala
RUN \
case $SCALA_VERSION in \
"3"*) URL=https://github.com/lampepfl/dotty/releases/download/$SCALA_VERSION/scala3-$SCALA_VERSION.tar.gz SCALA_DIR=/usr/share/scala3-$SCALA_VERSION ;; \
*) URL=https://downloads.typesafe.com/scala/$SCALA_VERSION/scala-$SCALA_VERSION.tgz SCALA_DIR=/usr/share/scala-$SCALA_VERSION ;; \
esac && \
curl -fsL --show-error $URL | tar xfz - -C /usr/share && \
mv $SCALA_DIR /usr/share/scala && \
chown -R root:root /usr/share/scala && \
chmod -R 755 /usr/share/scala && \
ln -s /usr/share/scala/bin/* /usr/local/bin && \
mkdir -p /test && \
case $SCALA_VERSION in \
"3"*) echo 'import java.io.FileInputStream;import java.util.jar.JarInputStream;val scala3LibJar = classOf[CanEqual[_, _]].getProtectionDomain.getCodeSource.getLocation.toURI.getPath;val manifest = new JarInputStream(new FileInputStream(scala3LibJar)).getManifest;val ver = manifest.getMainAttributes.getValue("Implementation-Version");@main def main = println(s"Scala version ${ver}")' > /test/test.scala ;; \
*) echo "println(util.Properties.versionMsg)" > /test/test.scala ;; \
esac && \
scala -nocompdaemon test/test.scala && \
rm -fr test

# Symlink java to have it available on sbtuser's PATH
RUN ln -s /opt/java/openjdk/bin/java /usr/local/bin/java

# Add and use user sbtuser
RUN groupadd --gid $GROUP_ID sbtuser && useradd -m --gid $GROUP_ID --uid $USER_ID sbtuser --shell /bin/bash
USER sbtuser

# Switch working directory
WORKDIR /home/sbtuser

# Prepare sbt (warm cache)
RUN \
sbt sbtVersion && \
mkdir -p project && \
echo "scalaVersion := \"${SCALA_VERSION}\"" > build.sbt && \
echo "sbt.version=${SBT_VERSION}" > project/build.properties && \
echo "// force sbt compiler-bridge download" > project/Dependencies.scala && \
echo "case object Temp" > Temp.scala && \
sbt compile && \
rm -r project && rm build.sbt && rm Temp.scala && rm -r target

# Link everything into root as well
# This allows users of this container to choose, whether they want to run the container as sbtuser (non-root) or as root
USER root
RUN \
rm -rf /tmp/..?* /tmp/.[!.]* * && \
ln -s /home/sbtuser/.cache /root/.cache && \
ln -s /home/sbtuser/.sbt /root/.sbt && \
if [ -d "/home/sbtuser/.ivy2" ]; then ln -s /home/sbtuser/.ivy2 /root/.ivy2; fi

# Switch working directory back to root
## Users wanting to use this container as non-root should combine the two following arguments
## -u sbtuser
## -w /home/sbtuser
WORKDIR /root

CMD ["sbt"]

0 comments on commit 985c682

Please sign in to comment.