Update Dockerfile
Browse files- Dockerfile +44 -10
Dockerfile
CHANGED
|
@@ -1,16 +1,50 @@
|
|
| 1 |
-
FROM
|
| 2 |
-
|
| 3 |
-
WORKDIR /app
|
| 4 |
|
|
|
|
| 5 |
RUN apt-get update && apt-get install -y --no-install-recommends \
|
| 6 |
-
|
| 7 |
-
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
| 8 |
|
| 9 |
-
|
| 10 |
-
|
|
|
|
| 11 |
|
| 12 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 13 |
|
| 14 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 15 |
|
| 16 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
FROM eclipse-temurin:17-jdk-jammy
|
|
|
|
|
|
|
| 2 |
|
| 3 |
+
ENV DEBIAN_FRONTEND=noninteractive
|
| 4 |
RUN apt-get update && apt-get install -y --no-install-recommends \
|
| 5 |
+
python3 python3-pip unzip curl ca-certificates git \
|
| 6 |
+
&& rm -rf /var/lib/apt/lists/* \
|
| 7 |
+
&& pip3 install --no-cache-dir flask
|
| 8 |
|
| 9 |
+
ENV ANDROID_HOME=/opt/android-sdk \
|
| 10 |
+
ANDROID_SDK_ROOT=/opt/android-sdk \
|
| 11 |
+
PATH=/opt/gradle/bin:/opt/android-sdk/cmdline-tools/latest/bin:$PATH
|
| 12 |
|
| 13 |
+
# Android command-line tools
|
| 14 |
+
RUN mkdir -p /opt/android-sdk/cmdline-tools && cd /tmp \
|
| 15 |
+
&& curl -fsSL -o ct.zip https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip \
|
| 16 |
+
&& unzip -q ct.zip \
|
| 17 |
+
&& mv cmdline-tools /opt/android-sdk/cmdline-tools/latest \
|
| 18 |
+
&& rm ct.zip
|
| 19 |
|
| 20 |
+
# Gradle 9.3.1 (minimum required by AGP 9.1.x)
|
| 21 |
+
RUN cd /tmp \
|
| 22 |
+
&& curl -fsSL -o g.zip https://services.gradle.org/distributions/gradle-9.3.1-bin.zip \
|
| 23 |
+
&& unzip -q g.zip -d /opt \
|
| 24 |
+
&& mv /opt/gradle-9.3.1 /opt/gradle \
|
| 25 |
+
&& rm g.zip
|
| 26 |
+
|
| 27 |
+
# SDK packages (android-36.1 is optional; AGP can also fetch it itself)
|
| 28 |
+
RUN yes | sdkmanager --licenses > /dev/null \
|
| 29 |
+
&& sdkmanager "platform-tools" "platforms;android-36" "build-tools;36.0.0" \
|
| 30 |
+
&& (sdkmanager "platforms;android-36.1" || true)
|
| 31 |
|
| 32 |
+
# HF Spaces runs the container as uid 1000
|
| 33 |
+
RUN useradd -m -u 1000 user && chown -R user:user /opt/android-sdk
|
| 34 |
+
USER user
|
| 35 |
+
ENV GRADLE_USER_HOME=/home/user/.gradle
|
| 36 |
+
WORKDIR /home/user/app
|
| 37 |
+
# Optional warm-up: put your project zip in the Space repo as warmup.zip.
|
| 38 |
+
# It is built once while the image is created, so every dependency (AGP, Kotlin,
|
| 39 |
+
# Compose, Room...) is already cached and later builds skip the downloads.
|
| 40 |
+
COPY --chown=user app.py warmup.zi[p] ./
|
| 41 |
+
RUN if [ -f warmup.zip ]; then \
|
| 42 |
+
mkdir -p /tmp/warm && unzip -q warmup.zip -d /tmp/warm \
|
| 43 |
+
&& R="$(dirname "$(find /tmp/warm -name 'settings.gradle*' | head -1)")" \
|
| 44 |
+
&& cd "$R" && echo "sdk.dir=$ANDROID_HOME" > local.properties \
|
| 45 |
+
&& gradle assembleDebug --console=plain --build-cache --no-configuration-cache \
|
| 46 |
+
-Dorg.gradle.jvmargs=-Xmx3g || true; \
|
| 47 |
+
fi; rm -rf /tmp/warm /home/user/app/warmup.zip
|
| 48 |
+
|
| 49 |
+
EXPOSE 7860
|
| 50 |
+
CMD ["python3", "app.py"]
|