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"]