mirror of
https://github.com/zapstore/zapstore.git
synced 2026-10-06 13:08:24 +00:00
80 lines
3.0 KiB
Docker
80 lines
3.0 KiB
Docker
FROM ubuntu:22.04
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive \
|
|
LANG=C.UTF-8 \
|
|
LC_ALL=C.UTF-8
|
|
|
|
# ---- Pinned inputs (override via --build-arg) ----
|
|
ARG FLUTTER_VERSION=3.38.6
|
|
ARG FLUTTER_SHA256=a70e3b829f53acd013aae65995755db0f421457b5ab754afa5a344cd5ec4d8d5
|
|
|
|
ARG CMDLINE_TOOLS_URL=https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
|
|
ARG CMDLINE_TOOLS_SHA256=2d2d50857e4eb553af5a6dc3ad507a17adf43d115264b1afc116f95c92e5e258
|
|
|
|
ARG ANDROID_PLATFORM=36
|
|
ARG ANDROID_PLATFORM_COMPAT_34=34
|
|
ARG ANDROID_PLATFORM_COMPAT_35=35
|
|
ARG ANDROID_BUILD_TOOLS=35.0.0
|
|
ARG ANDROID_BUILD_TOOLS_COMPAT=34.0.0
|
|
ARG ANDROID_NDK_VERSION=27.0.12077973
|
|
|
|
# ---- System deps ----
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
ca-certificates \
|
|
curl \
|
|
git \
|
|
openjdk-17-jdk \
|
|
python3 \
|
|
unzip \
|
|
xz-utils \
|
|
zip \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# ---- Android SDK (pinned cmdline-tools + pinned packages) ----
|
|
ENV ANDROID_SDK_ROOT=/opt/android-sdk \
|
|
ANDROID_HOME=/opt/android-sdk
|
|
ENV PATH="${PATH}:${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin:${ANDROID_SDK_ROOT}/platform-tools"
|
|
|
|
RUN mkdir -p "${ANDROID_SDK_ROOT}/cmdline-tools" && \
|
|
curl -fsSL -o /tmp/cmdline-tools.zip "${CMDLINE_TOOLS_URL}" && \
|
|
echo "${CMDLINE_TOOLS_SHA256} /tmp/cmdline-tools.zip" | sha256sum -c - && \
|
|
unzip -q /tmp/cmdline-tools.zip -d "${ANDROID_SDK_ROOT}/cmdline-tools" && \
|
|
mv "${ANDROID_SDK_ROOT}/cmdline-tools/cmdline-tools" "${ANDROID_SDK_ROOT}/cmdline-tools/latest" && \
|
|
rm /tmp/cmdline-tools.zip
|
|
|
|
RUN yes | sdkmanager --licenses >/dev/null
|
|
|
|
RUN sdkmanager \
|
|
"platform-tools" \
|
|
"platforms;android-${ANDROID_PLATFORM_COMPAT_34}" \
|
|
"platforms;android-${ANDROID_PLATFORM_COMPAT_35}" \
|
|
"platforms;android-${ANDROID_PLATFORM}" \
|
|
"build-tools;${ANDROID_BUILD_TOOLS_COMPAT}" \
|
|
"build-tools;${ANDROID_BUILD_TOOLS}" \
|
|
"ndk;${ANDROID_NDK_VERSION}"
|
|
|
|
# ---- Non-root user (Flutter should not run as root) ----
|
|
RUN useradd -m -s /bin/bash builder
|
|
|
|
# ---- Flutter SDK (pinned version + sha256) ----
|
|
ENV FLUTTER_ROOT=/opt/flutter
|
|
ENV PATH="${PATH}:${FLUTTER_ROOT}/bin:${FLUTTER_ROOT}/bin/cache/dart-sdk/bin"
|
|
|
|
RUN curl -fsSL -o /tmp/flutter.tar.xz "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${FLUTTER_VERSION}-stable.tar.xz" && \
|
|
echo "${FLUTTER_SHA256} /tmp/flutter.tar.xz" | sha256sum -c - && \
|
|
mkdir -p /opt && \
|
|
tar -xJf /tmp/flutter.tar.xz -C /opt && \
|
|
rm /tmp/flutter.tar.xz
|
|
|
|
# Ensure builder owns toolchains (avoid git \"dubious ownership\" and permission issues)
|
|
RUN chown -R builder:builder /opt/flutter /opt/android-sdk
|
|
|
|
# Writable workspace for the non-root user
|
|
RUN mkdir -p /work && chown -R builder:builder /work
|
|
|
|
# Pre-warm caches (still may download plugin/Gradle deps at build time).
|
|
USER builder
|
|
RUN git config --global --add safe.directory /opt/flutter && flutter --version && flutter precache --android && flutter --disable-analytics >/dev/null 2>&1 || true
|
|
|
|
WORKDIR /work
|