refactor: optimize Dockerfile for Flutter Android environment

This commit is contained in:
2026-02-24 15:52:43 +05:00
parent a85ff9c9a7
commit 4427f60107
+39 -18
View File
@@ -1,12 +1,22 @@
FROM ubuntu:22.04 FROM ubuntu:22.04-slim
ENV DEBIAN_FRONTEND=noninteractive ENV DEBIAN_FRONTEND=noninteractive
# ===== ВЕРСИИ (фиксируем для стабильности CI) =====
ENV FLUTTER_VERSION=3.19.6
ENV ANDROID_API=34
ENV ANDROID_BUILD_TOOLS=34.0.0
ENV ANDROID_CMDLINE_TOOLS=11076708
# ===== ПУТИ =====
ENV ANDROID_HOME=/opt/android-sdk ENV ANDROID_HOME=/opt/android-sdk
ENV ANDROID_SDK_ROOT=/opt/android-sdk ENV ANDROID_SDK_ROOT=/opt/android-sdk
ENV FLUTTER_HOME=/opt/flutter ENV FLUTTER_HOME=/opt/flutter
ENV GRADLE_USER_HOME=/opt/gradle
ENV PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$FLUTTER_HOME/bin ENV PATH=$PATH:$ANDROID_HOME/cmdline-tools/latest/bin:$ANDROID_HOME/platform-tools:$FLUTTER_HOME/bin
# Установка зависимостей # ===== БАЗОВЫЕ ПАКЕТЫ =====
RUN apt-get update && apt-get install -y \ RUN apt-get update && apt-get install -y \
curl \ curl \
git \ git \
@@ -17,32 +27,43 @@ RUN apt-get update && apt-get install -y \
openjdk-17-jdk \ openjdk-17-jdk \
wget \ wget \
ca-certificates \ ca-certificates \
bash \
libc6 \
libstdc++6 \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
# Установка Android SDK command line tools # ===== ANDROID SDK =====
RUN mkdir -p $ANDROID_HOME/cmdline-tools RUN mkdir -p ${ANDROID_HOME}/cmdline-tools \
WORKDIR $ANDROID_HOME/cmdline-tools && cd ${ANDROID_HOME}/cmdline-tools \
&& wget https://dl.google.com/android/repository/commandlinetools-linux-${ANDROID_CMDLINE_TOOLS}_latest.zip -O sdk-tools.zip \
RUN wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O sdk-tools.zip \
&& unzip sdk-tools.zip \ && unzip sdk-tools.zip \
&& rm sdk-tools.zip \ && rm sdk-tools.zip \
&& mv cmdline-tools latest && mv cmdline-tools latest
# Принимаем лицензии и устанавливаем платформы # Принимаем лицензии
RUN yes | sdkmanager --licenses RUN yes | sdkmanager --licenses
# Устанавливаем только нужное
RUN sdkmanager \ RUN sdkmanager \
"platform-tools" \ "platform-tools" \
"platforms;android-34" \ "platforms;android-${ANDROID_API}" \
"build-tools;34.0.0" "build-tools;${ANDROID_BUILD_TOOLS}"
# Установка Flutter # ===== FLUTTER =====
WORKDIR /opt RUN git clone https://github.com/flutter/flutter.git \
RUN git clone https://github.com/flutter/flutter.git -b stable --branch ${FLUTTER_VERSION} \
--depth 1 \
${FLUTTER_HOME}
# Предварительная инициализация # Precache только Android (без web, linux, macOS)
RUN flutter doctor RUN flutter precache --android
RUN flutter precache
# Рабочая директория # ===== GRADLE (предварительный warmup) =====
WORKDIR /app RUN mkdir -p ${GRADLE_USER_HOME}
# ===== ОЧИСТКА МУСОРА =====
RUN rm -rf /root/.cache \
&& rm -rf ${ANDROID_HOME}/.android \
&& rm -rf /tmp/*
WORKDIR /app