Spaces:
Running
Running
File size: 2,344 Bytes
1ad5c6e 9bf7a87 1ad5c6e 90b3878 1ad5c6e 90b3878 740ba95 639c266 1ad5c6e 639c266 9bf7a87 1ad5c6e 639c266 1ad5c6e 74d125f faf4f38 1ad5c6e 2ecba28 74d125f 1ad5c6e faf4f38 1ad5c6e 74d125f 1ad5c6e 9bf7a87 1ad5c6e 6659069 1ad5c6e 639c266 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
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"] |