# ── Stage 1: Tools (wird gecacht – nur bei SDK-Änderungen neu gebaut) ──────── FROM eclipse-temurin:21-jdk-jammy AS tools RUN apt-get update && apt-get install -y --no-install-recommends \ curl unzip wget ca-certificates \ && rm -rf /var/lib/apt/lists/* # Bun RUN curl -fsSL https://bun.sh/install | bash ENV PATH="/root/.bun/bin:$PATH" # Symlink damit Tools mit #!/usr/bin/env node funktionieren RUN ln -s /root/.bun/bin/bun /usr/local/bin/node # 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/tools.zip && \ unzip -q /tmp/tools.zip -d $ANDROID_HOME/cmdline-tools && \ mv $ANDROID_HOME/cmdline-tools/cmdline-tools $ANDROID_HOME/cmdline-tools/latest && \ rm /tmp/tools.zip RUN yes | sdkmanager --licenses > /dev/null 2>&1 && \ sdkmanager \ "platforms;android-35" \ "build-tools;35.0.0" \ "platform-tools" # ── Stage 2: Build ──────────────────────────────────────────────────────────── FROM tools AS builder WORKDIR /app # Abhängigkeiten cachen COPY client/package.json client/bun.lock* ./client/ RUN cd client && bun install COPY . . # 1. Web-App bauen (ohne PWA Service Worker für Capacitor) RUN cd client && CAPACITOR=1 bun run build # 2. Web-Assets in das Android-Projekt synchronisieren # (android/ ist im Repo eingecheckt – kein cap add nötig) RUN cd client && CI=true ./node_modules/.bin/cap sync android # 3. APK bauen RUN cd client/android && \ chmod +x gradlew && \ GRADLE_OPTS="-Xmx3g -XX:MaxMetaspaceSize=512m" \ ./gradlew assembleDebug --no-daemon # ── Stage 3: Nur die APK (für --output) ────────────────────────────────────── FROM scratch COPY --from=builder \ /app/client/android/app/build/outputs/apk/debug/app-debug.apk \ /tiptoi-sync.apk