Files
tiptoi-sync/Dockerfile.android
T
arnef 1983598e38 Add Docker-based Android APK build tooling
Multi-stage Dockerfile.android (Bun + Android SDK + Gradle) built via
build-apk.sh, so the APK can be built reproducibly without a local
Android SDK install.
2026-08-12 11:54:39 +02:00

60 lines
2.2 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ── 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