Spaces:
Running
Running
FROM python:3.11-slim | |
# Create a non-root user and set up home directory | |
RUN useradd -m -u 1000 appuser && \ | |
mkdir -p /home/appuser/.cache /home/appuser/.local && \ | |
chown -R appuser:appuser /home/appuser | |
# Set working directory | |
WORKDIR /app | |
# Install system dependencies for Android SDK, Briefcase, and native builds | |
RUN apt-get update && apt-get install -y \ | |
openjdk-17-jdk \ | |
git \ | |
unzip \ | |
wget \ | |
build-essential \ | |
pkg-config \ | |
libcairo2-dev \ | |
meson \ | |
ninja-build \ | |
python3-pip \ | |
&& rm -rf /var/lib/apt/lists/* | |
# Ensure pip is installed and up-to-date | |
RUN python3 -m ensurepip --upgrade && \ | |
python3 -m pip install --no-cache-dir --upgrade pip | |
# Install Python dependencies as root | |
COPY requirements.txt . | |
RUN python3 -m pip install --no-cache-dir -r requirements.txt | |
# Set up Android SDK | |
ENV ANDROID_HOME=/opt/android-sdk | |
ENV ANDROID_SDK_ROOT=/opt/android-sdk | |
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64 | |
RUN mkdir -p $ANDROID_HOME/cmdline-tools && \ | |
wget -q https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip -O tools.zip && \ | |
unzip tools.zip -d $ANDROID_HOME/cmdline-tools && \ | |
mv $ANDROID_HOME/cmdline-tools/cmdline-tools $ANDROID_HOME/cmdline-tools/latest && \ | |
rm tools.zip | |
# Update PATH to include Android SDK tools and user-local bin | |
ENV PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:/usr/local/bin:/home/appuser/.local/bin | |
# Install Android SDK components | |
RUN sdkmanager "build-tools;33.0.0" "platforms;android-33" "platform-tools" "ndk;25.2.9519653" | |
# Accept Android SDK licenses | |
RUN mkdir -p $ANDROID_HOME/licenses && \ | |
echo "24333f8a63b6825ea9c5514f83c2829b004d1fee" > $ANDROID_HOME/licenses/android-sdk-license && \ | |
echo "84831b9409646a918e30573bab4c9c91346d8abd" > $ANDROID_HOME/licenses/android-sdk-preview-license && \ | |
echo "d975f751698a77b662f1254ddbeed3901e976f5a" > $ANDROID_HOME/licenses/intel-android-extra-license && \ | |
chown -R appuser:appuser $ANDROID_HOME | |
# Verify SDK installation | |
RUN sdkmanager --list --verbose | |
# Copy application code | |
COPY app.py . | |
# Set up persistent storage | |
RUN mkdir -p /persistent_storage && chown appuser:appuser /persistent_storage | |
# Switch to non-root user | |
USER appuser | |
# Expose port | |
EXPOSE 7860 | |
CMD ["python3", "app.py"] |