Skip to content

Commit

Permalink
Add amazon-corretto base image (17, 11)
Browse files Browse the repository at this point in the history
  • Loading branch information
kijuky committed Mar 7, 2023
1 parent e4c309c commit 8c93d71
Show file tree
Hide file tree
Showing 3 changed files with 104 additions and 0 deletions.
11 changes: 11 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ jobs:
'eclipse-temurin-jammy-8u352-b08',
'eclipse-temurin-focal-17.0.5_8',
'eclipse-temurin-focal-11.0.17_8',
'amazoncorretto-17.0.6',
'amazoncorretto-11.0.18'
]
include:
# https://github.com/graalvm/container/pkgs/container/graalvm-ce
Expand Down Expand Up @@ -62,6 +64,15 @@ jobs:
dockerContext: 'eclipse-temurin'
baseImageTag: '11.0.17_8-jdk-focal'
platforms: 'linux/amd64,linux/arm64'
# https://hub.docker.com/_/amazoncorretto/tags
- javaTag: 'amazoncorretto-17.0.6'
dockerContext: 'amazoncorretto'
baseImageTag: '17.0.6'
platforms: 'linux/amd64'
- javaTag: 'amazoncorretto-11.0.18'
dockerContext: 'amazoncorretto'
baseImageTag: '11.0.18'
platforms: 'linux/amd64'
steps:
- uses: actions/checkout@v3
- name: Set up QEMU
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
92 changes: 92 additions & 0 deletions amazoncorretto/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
#
# Scala and sbt Dockerfile
#
# https://github.com/sbt/docker-sbt
#

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

# Env variables
ARG SCALA_VERSION
ENV SCALA_VERSION ${SCALA_VERSION:-2.13.10}
ARG SBT_VERSION
ENV SBT_VERSION ${SBT_VERSION:-1.8.2}
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 yum -y update && \
yum -y install tar gzip git rpm && \
rm -rf /var/cache/yum/* && \
yum clean all

# Install sbt
RUN \
curl -fsL "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 $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 && \
case $SCALA_VERSION in \
"3"*) \
echo '@main def main = println(s"Scala library version ${dotty.tools.dotc.config.Properties.versionNumberString}")' > test.scala && \
# WORKAROUND: tput: terminal attributes: No such device or address
mv /usr/bin/tput /usr/bin/_tput && \
scala test.scala && rm test.scala && \
mv /usr/bin/_tput /usr/bin/tput ;; \
*) \
echo "println(util.Properties.versionMsg)" > test.scala && \
scala -nocompdaemon test.scala && rm test.scala ;; \
esac

# 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 \
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 8c93d71

Please sign in to comment.