Dockerfile40 lines · 1441 chars FROM gradle:8-jdk17
ENV DEBIAN_FRONTEND=noninteractive
# Install essential build-time dependencies and Node.js environment
RUN apt-get update -qq && \
apt-get install -y -qq curl git unzip zip ca-certificates wget && \
rm -rf /var/lib/apt/lists/*
# Install Node.js (pin to v18.x for compatibility) and Yarn
RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && \
apt-get update -qq && \
apt-get install -y -qq nodejs && \
npm install -g yarn
# Install Android SDK Command-line Tools (non-interactive, licenses accepted via sdkmanager)
RUN mkdir -p /opt/android-sdk && \
cd /opt/android-sdk && \
wget -q https://dl.google.com/android/repository/commandlinetools-linux-9477226_latest.zip -O cmdline-tools.zip && \
unzip -q cmdline-tools.zip -d cmdline-tools && \
rm cmdline-tools.zip && \
yes | ./cmdline-tools/bin/sdkmanager --sdk_root=/opt/android-sdk "platform-tools" "platforms;android-33" "build-tools;33.0.2"
# Android SDK environment variables
ENV ANDROID_HOME=/opt/android-sdk
ENV ANDROID_SDK_ROOT=/opt/android-sdk
ENV PATH=$PATH:/opt/android-sdk/cmdline-tools/bin:/opt/android-sdk/platform-tools
WORKDIR /workspace
# Copy source and build
COPY . /workspace
# Install Java/JS dependencies and build the Android component
RUN yarn install && \
./gradlew :packages:react-native:ReactAndroid:build
# Default to an interactive shell for container usability
CMD ["/bin/bash"]