diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..560d92e --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +node_modules +android/build +android/app/build +android/.gradle +.gradle +ios/build +.git diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a9626bf --- /dev/null +++ b/Dockerfile @@ -0,0 +1,48 @@ +FROM ubuntu:22.04 + +ENV DEBIAN_FRONTEND=noninteractive + +# System dependencies +RUN apt-get update && apt-get install -y \ + curl unzip wget git openjdk-17-jdk-headless \ + && rm -rf /var/lib/apt/lists/* + +ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 + +# Node.js 18 (required for RN 0.73 CLI compatibility) +RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \ + && apt-get install -y nodejs \ + && rm -rf /var/lib/apt/lists/* + +# Android SDK +ENV ANDROID_HOME=/opt/android-sdk +ENV PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools + +RUN mkdir -p $ANDROID_HOME/cmdline-tools && \ + wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O /tmp/cmdline-tools.zip && \ + unzip -q /tmp/cmdline-tools.zip -d /tmp/cmdline-tools && \ + mv /tmp/cmdline-tools/cmdline-tools $ANDROID_HOME/cmdline-tools/latest && \ + rm /tmp/cmdline-tools.zip + +# Accept licenses and install exact SDK components +RUN yes | sdkmanager --licenses > /dev/null 2>&1 && \ + sdkmanager \ + "platform-tools" \ + "platforms;android-35" \ + "build-tools;35.0.0" \ + "ndk;25.1.8937393" + +ENV ANDROID_NDK_HOME=$ANDROID_HOME/ndk/25.1.8937393 + +WORKDIR /app + +# Install JS dependencies +COPY package.json package-lock.json ./ +COPY patches/ ./patches/ +RUN npm ci + +# Copy rest of the project +COPY . . + +# Build release AAB by default; override CMD for APK +CMD ["bash", "-c", "cd android && ./gradlew bundleRelease"]