-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathDockerfile
More file actions
85 lines (74 loc) · 2.83 KB
/
Dockerfile
File metadata and controls
85 lines (74 loc) · 2.83 KB
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
78
79
80
81
82
83
84
85
#################################################################
# Step 1: Build the companion app #
#################################################################
FROM gradle:8.5-jdk17 AS companion-builder
WORKDIR /usr/src/app
# Install Android SDK
RUN apt-get update && apt-get install -y wget unzip
RUN mkdir -p /sdk && \
cd /sdk && \
wget https://dl.google.com/android/repository/commandlinetools-linux-10406996_latest.zip -O cmdline-tools.zip && \
unzip cmdline-tools.zip -d cmdline-tools-temp && \
rm cmdline-tools.zip && \
mkdir -p /sdk/cmdline-tools/latest && \
mv cmdline-tools-temp/cmdline-tools/* /sdk/cmdline-tools/latest/ && \
rm -rf cmdline-tools-temp
ENV ANDROID_SDK_ROOT=/sdk
ENV ANDROID_HOME=/sdk
ENV PATH="$PATH:/sdk/cmdline-tools/latest/bin:/sdk/platform-tools"
RUN yes | sdkmanager --licenses
RUN sdkmanager \
"platform-tools" \
"platforms;android-35" \
"build-tools;35.0.0"
# Copy package.json for the version
COPY package.json /usr/src/app/package.json
COPY companion /usr/src/app/companion
RUN cd ./companion && ./gradlew assembleRelease
#################################################################
# Step 2: Build everything using the `npm build` command #
#################################################################
FROM node:24.13-trixie-slim AS main-builder
WORKDIR /usr/src/app
COPY . .
RUN npm install --ignore-scripts && \
npx fetch-scrcpy-server 3.1 && \
npm run scrcpy && \
npm run build:setup && \
npm run build:client && \
npm run build:server && \
npm run copy-files
RUN mkdir dist/resources && \
cp resources/scrcpy-server.jar dist/resources/scrcpy-server.jar && \
cp -r library dist
COPY --from=companion-builder /usr/src/app/companion/droidground-companion.dex dist/resources/droidground-companion.dex
#################################################################
# Step 3: Pack everything together #
#################################################################
FROM node:24.13-trixie-slim
WORKDIR /droidground
ENV NODE_ENV=production
COPY --from=main-builder /usr/src/app/dist .
COPY run.sh ./
COPY package*.json ./
RUN apt-get update && \
apt-get install -y \
build-essential \
curl \
wget \
git \
unzip \
libglib2.0-dev \
libssl-dev \
&& rm -rf /var/lib/apt/lists/*
# Download and install platform-tools (ADB)
RUN curl -o platform-tools.zip https://dl.google.com/android/repository/platform-tools-latest-linux.zip \
&& unzip platform-tools.zip \
&& rm platform-tools.zip \
&& mv platform-tools /opt/platform-tools \
&& ln -s /opt/platform-tools/adb /usr/local/bin/adb
RUN npm ci --omit=dev --ignore-scripts
# Running with "--ignore-scripts" skips the frida post-install script as well, rebuild is required
RUN npm rebuild frida
RUN chmod +x run.sh
ENTRYPOINT ["./run.sh"]