File size: 2,746 Bytes
1d60ab8
9cc5746
da9c800
 
 
 
 
1d60ab8
 
 
 
8955171
 
da9c800
1d60ab8
9cc5746
da9c800
 
 
 
 
 
 
 
 
 
 
 
 
 
698fa91
 
da9c800
698fa91
 
 
c3685cc
698fa91
c3685cc
 
698fa91
c3685cc
da9c800
c3685cc
da9c800
c3685cc
 
 
 
 
 
 
698fa91
c3685cc
 
 
da9c800
c3685cc
da9c800
 
 
 
 
 
c3685cc
da9c800
 
1d60ab8
110adc0
1d60ab8
da9c800
110adc0
9cc5746
da9c800
1d60ab8
da9c800
 
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
72
73
74
75
76
77
FROM python:3.10-slim

# Force system to run as root explicitly
USER root
ENV HOME=/root

# Basic tools download karein - Added 'sudo' and build utilities
RUN apt-get update && apt-get install -y \
    curl \
    git \
    unzip \
    xz-utils \
    zip \
    sudo \
    && rm -rf /var/lib/apt/lists/*

# URL ko puri tarah obfuscate kar diya taaki web parser ise link na banaye
ENV J_HOST=download.java.net
ENV J_PATH=java/GA/jdk17.0.2/dfd4a8d0985749f896bed50d7138ee7f/8/GPL
ENV J_FILE=openjdk-17.0.2_linux-x64_bin.tar.gz

# Android Repo Obfuscation
ENV A_HOST=dl.google.com
ENV A_PATH=android/repository
ENV A_FILE=commandlinetools-linux-11076708_latest.zip

# Flutter Repo Obfuscation
ENV F_HOST=github.com
ENV F_PATH=flutter/flutter.git

# Production-ready OpenJDK 17 Linux x64 Binary download aur extract karein
RUN mkdir -p /opt/java \
    && curl -L -o /tmp/openjdk.tar.gz https://${J_HOST}/${J_PATH}/${J_FILE} \
    && tar -xf /tmp/openjdk.tar.gz -C /opt/java --strip-components=1 \
    && rm /tmp/openjdk.tar.gz

# Environment variables set karein taaki Java, Android aur Flutter globally accessible ho
ENV JAVA_HOME=/opt/java
ENV ANDROID_HOME=/opt/android-sdk
ENV FLUTTER_HOME=/opt/flutter
ENV PATH=$PATH:$JAVA_HOME/bin:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$ANDROID_HOME/build-tools/34.0.0:$FLUTTER_HOME/bin

# Android Command Line Tools setup
RUN mkdir -p $ANDROID_HOME/cmdline-tools \
    && curl -L -o /tmp/cmdline.zip https://${A_HOST}/${A_PATH}/${A_FILE} \
    && unzip -q /tmp/cmdline.zip -d $ANDROID_HOME/cmdline-tools \
    && mv $ANDROID_HOME/cmdline-tools/cmdline-tools $ANDROID_HOME/cmdline-tools/latest \
    && rm /tmp/cmdline.zip

# Non-interactive licenses accept karein
RUN yes | sdkmanager --licenses

# Android SDK Platforms aur Build Tools pehle se load kar rahe hain
RUN sdkmanager "platform-tools" "platforms;android-34" "build-tools;34.0.0"

# Flutter SDK stable channel clone karein
RUN git clone https://${F_HOST}/${F_PATH} -b stable $FLUTTER_HOME

# FIX: Pre-install global standalone Gradle binaries inside sandbox to enable local wrapper instantiation
RUN mkdir -p /opt/gradle \
    && curl -L -o /tmp/gradle.zip https://services.gradle.org/distributions/gradle-7.5.1-bin.zip \
    && unzip -q /tmp/gradle.zip -d /opt/gradle \
    && rm /tmp/gradle.zip
ENV PATH=$PATH:/opt/gradle/gradle-7.5.1/bin

# Permissions 777 root core systems ke liye
RUN chmod -R 777 /opt

WORKDIR $HOME/app

COPY requirements.txt $HOME/app/requirements.txt
RUN pip install --no-cache-dir --upgrade -r $HOME/app/requirements.txt

COPY . $HOME/app

# Uvicorn ko directly global root environment me execute karne ke liye path open rakha hai
CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]