Dockerfile42 lines · 1725 chars # Stage 1: Builder
FROM gradle:9.2.1-jdk17 AS builder
ENV DEBIAN_FRONTEND=noninteractive
# Install essential tools
RUN apt-get update -qq \
&& apt-get install -y --no-install-recommends curl unzip git ca-certificates \
&& rm -rf /var/lib/apt/lists/*
# Android SDK command-line tools (for building Android modules)
ENV ANDROID_SDK_ROOT=/opt/android-sdk
RUN mkdir -p "$ANDROID_SDK_ROOT/cmdline-tools" \
&& curl -fL -o /tmp/commandlinetools-linux.zip https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip \
&& unzip -q /tmp/commandlinetools-linux.zip -d "$ANDROID_SDK_ROOT/cmdline-tools" \
&& rm /tmp/commandlinetools-linux.zip
ENV PATH="$PATH:$ANDROID_SDK_ROOT/cmdline-tools/bin:$ANDROID_SDK_ROOT/cmdline-tools/tools/bin:$ANDROID_SDK_ROOT/platform-tools"
# Accept licenses and install a minimal set of Android components (best effort)
RUN mkdir -p "$ANDROID_SDK_ROOT" \
&& yes | "$ANDROID_SDK_ROOT/cmdline-tools/bin/sdkmanager" --licenses >/dev/null 2>&1 || true \
&& "$ANDROID_SDK_ROOT/cmdline-tools/bin/sdkmanager" "platform-tools" "platforms;android-36" "build-tools;36.0.3" >/dev/null 2>&1 || true
WORKDIR /workspace
# Copy the project sources
COPY . .
# Build the project from source (skip tests for speed)
RUN ./gradlew build -x test
# Stage 2: Runtime image (leaner, only the built artifacts)
FROM eclipse-temurin:17-jre
WORKDIR /workspace
# Copy only built outputs to keep the runtime image lean
COPY --from=builder /workspace/build /workspace/build
# Provide a simple command to inspect the build results and keep the container alive
CMD ["sh", "-lc", "echo Build finished. Contents of /workspace/build:"; ls -la /workspace/build; tail -f /dev/null]