Dockerfile50 lines · 2028 chars # Multi-stage Dockerfile to build DanmakuFlameMaster from source and collect artifacts
# Stage 1: builder with Android SDK and Gradle
FROM gradle:jdk11 AS builder
ENV DEBIAN_FRONTEND=noninteractive
# Install essential system dependencies
RUN apt-get update -y && \
apt-get install -y --no-install-recommends curl unzip zip ca-certificates && \
rm -rf /var/lib/apt/lists/*
# Android SDK locations and PATH
ENV ANDROID_SDK_ROOT=/opt/android-sdk
ENV ANDROID_HOME=$ANDROID_SDK_ROOT
ENV PATH=$PATH:$ANDROID_SDK_ROOT/tools:$ANDROID_SDK_ROOT/tools/bin:$ANDROID_SDK_ROOT/platform-tools:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin
# Install Android command-line tools and required platforms/build-tools/NDK
RUN mkdir -p $ANDROID_SDK_ROOT/cmdline-tools
RUN curl -sS -L https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip -o /tmp/commandlinetools.zip && \
unzip -q /tmp/commandlinetools.zip -d /tmp/commandline-tools && \
mkdir -p $ANDROID_SDK_ROOT/cmdline-tools/latest && \
mv /tmp/commandline-tools/cmdline-tools/* $ANDROID_SDK_ROOT/cmdline-tools/latest/ && \
rm -f /tmp/commandlinetools.zip
# Accept licenses and install required SDK components
RUN yes | sdkmanager --licenses || true
RUN yes | sdkmanager "platform-tools" "platforms;android-25" "build-tools;26.0.2" "ndk;21.0.6113669"
WORKDIR /workspace
# Copy source code into the image
COPY . /workspace
# Build the DanmakuFlameMaster module; skip unit tests for speed
RUN chmod +x gradlew && ./gradlew :DanmakuFlameMaster:assembleRelease -x test -x androidTest
# Stage 2: Runtime image that holds build artifacts
FROM alpine:3.20 AS runtime
# Minimal runtime with certificates
RUN apk add --no-cache ca-certificates
# Copy built artifacts from builder stage
COPY --from=builder /workspace/DanmakuFlameMaster/build/outputs/aar /artifacts/aar
WORKDIR /artifacts
# Default command lists available artifacts
CMD ["sh", "-lc", "echo 'DanmakuFlameMaster release AARs available at /artifacts/aar'; ls -la /artifacts/aar"]