Files
coder/dev-java/Dockerfile
T

50 lines
1.7 KiB
Docker

FROM codercom/enterprise-base:ubuntu
ARG DEBIAN_FRONTEND=noninteractive
ARG TEA_VERSION=
ARG TEA_ARCH=amd64
ARG JAVA_VERSION=21.0.4-tem
ARG MAVEN_VERSION=3.9.9
USER root
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y \
build-essential ca-certificates curl git jq sudo unzip wget zip && \
rm -rf /var/lib/apt/lists/*
RUN curl -fsSL https://get.docker.com | sh
RUN tea_version="${TEA_VERSION}" && \
if [ -z "$tea_version" ]; then \
tea_version="$(curl -fsSL https://gitea.com/api/v1/repos/gitea/tea/releases/latest | jq -r .tag_name)"; \
fi && \
tea_version="${tea_version#v}" && \
curl -fsSL "https://dl.gitea.com/tea/${tea_version}/tea-${tea_version}-linux-${TEA_ARCH}" \
-o /usr/local/bin/tea && \
chmod 755 /usr/local/bin/tea
ENV SDKMAN_DIR=/opt/sdkman
RUN curl -fsSL "https://get.sdkman.io?rcupdate=false" | bash && \
bash -c "source ${SDKMAN_DIR}/bin/sdkman-init.sh && \
sdk install java ${JAVA_VERSION} && \
sdk install maven ${MAVEN_VERSION}" && \
chown -R coder:coder ${SDKMAN_DIR}
RUN printf '%s\n' \
'export SDKMAN_DIR=/opt/sdkman' \
'[ -s "$SDKMAN_DIR/bin/sdkman-init.sh" ] && . "$SDKMAN_DIR/bin/sdkman-init.sh"' \
> /etc/profile.d/sdkman.sh
ENV CLAUDE_HOME=/opt/claude
RUN mkdir -p ${CLAUDE_HOME} && \
env HOME=${CLAUDE_HOME} bash -c 'curl -fsSL https://claude.ai/install.sh | bash' && \
ln -s ${CLAUDE_HOME}/.local/bin/claude /usr/local/bin/claude && \
chown -R coder:coder ${CLAUDE_HOME}
USER coder
ENV JAVA_HOME="/opt/sdkman/candidates/java/current"
ENV PATH="/opt/sdkman/candidates/java/current/bin:/opt/sdkman/candidates/maven/current/bin:${PATH}"