78 lines
2.6 KiB
Docker
78 lines
2.6 KiB
Docker
FROM ubuntu:24.04
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
ENV ANDROID_HOME=/opt/android-sdk
|
|
ENV ANDROID_SDK_ROOT=/opt/android-sdk
|
|
ENV ANDROID_NDK_HOME=/opt/android-sdk/ndk/27.0.12077973
|
|
ENV NDK_HOME=/opt/android-sdk/ndk/27.0.12077973
|
|
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
|
|
ENV PATH=/root/.cargo/bin:/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/platform-tools:/usr/local/bin:$PATH
|
|
|
|
ARG NPM_REGISTRY=https://registry.npmjs.org
|
|
ARG ANDROID_CMDLINE_TOOLS_VERSION=13114758
|
|
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
ca-certificates \
|
|
curl \
|
|
unzip \
|
|
xz-utils \
|
|
git \
|
|
build-essential \
|
|
pkg-config \
|
|
libssl-dev \
|
|
openjdk-17-jdk \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN curl -fsSL https://deb.nodesource.com/setup_24.x | bash - \
|
|
&& apt-get update \
|
|
&& apt-get install -y --no-install-recommends nodejs \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
RUN mkdir -p ${ANDROID_HOME}/cmdline-tools \
|
|
&& set -eux; \
|
|
for version in "${ANDROID_CMDLINE_TOOLS_VERSION}" 13114758 12266719 11076708 10406996; do \
|
|
url="https://dl.google.com/android/repository/commandlinetools-linux-${version}_latest.zip"; \
|
|
echo "Пробуем скачать Android command line tools: ${url}"; \
|
|
if curl -fsSL "${url}" -o /tmp/android-tools.zip; then \
|
|
break; \
|
|
fi; \
|
|
rm -f /tmp/android-tools.zip; \
|
|
done; \
|
|
test -s /tmp/android-tools.zip; \
|
|
unzip -q /tmp/android-tools.zip -d /tmp/android-tools; \
|
|
mv /tmp/android-tools/cmdline-tools ${ANDROID_HOME}/cmdline-tools/latest; \
|
|
rm -rf /tmp/android-tools /tmp/android-tools.zip
|
|
|
|
RUN yes | sdkmanager --licenses >/dev/null \
|
|
&& sdkmanager \
|
|
"platform-tools" \
|
|
"platforms;android-35" \
|
|
"build-tools;35.0.0" \
|
|
"ndk;27.0.12077973"
|
|
|
|
RUN curl --proto '=https' --tlsv1.2 -fsSL https://sh.rustup.rs | sh -s -- -y --profile minimal \
|
|
&& rustup target add aarch64-linux-android armv7-linux-androideabi i686-linux-android x86_64-linux-android
|
|
|
|
WORKDIR /workspace
|
|
|
|
COPY package.json package-lock.json .npmrc ./
|
|
COPY apps/sso-core/package.json ./apps/sso-core/
|
|
COPY apps/api-gateway/package.json ./apps/api-gateway/
|
|
COPY apps/frontend/package.json ./apps/frontend/
|
|
COPY apps/docs/package.json ./apps/docs/
|
|
COPY tauri_app/package.json ./tauri_app/
|
|
|
|
RUN --mount=type=cache,target=/root/.npm \
|
|
npm config set registry "${NPM_REGISTRY}" && \
|
|
npm ci --no-audit --no-fund
|
|
|
|
COPY apps/frontend ./apps/frontend
|
|
COPY shared ./shared
|
|
COPY tsconfig.base.json ./
|
|
COPY tauri_app ./tauri_app
|
|
COPY tauri_app/docker/build-android-apk.sh /usr/local/bin/build-android-apk
|
|
|
|
RUN chmod +x /usr/local/bin/build-android-apk
|
|
|
|
CMD ["build-android-apk"]
|