diff --git a/flutter-android/Dockerfile b/flutter-android/Dockerfile index 6c45cee..9d2fb57 100644 --- a/flutter-android/Dockerfile +++ b/flutter-android/Dockerfile @@ -1,12 +1,22 @@ -FROM ubuntu:22.04 +FROM ubuntu:22.04-slim 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_SDK_ROOT=/opt/android-sdk 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 -# Установка зависимостей +# ===== БАЗОВЫЕ ПАКЕТЫ ===== RUN apt-get update && apt-get install -y \ curl \ git \ @@ -17,32 +27,43 @@ RUN apt-get update && apt-get install -y \ openjdk-17-jdk \ wget \ ca-certificates \ + bash \ + libc6 \ + libstdc++6 \ && rm -rf /var/lib/apt/lists/* -# Установка Android SDK command line tools -RUN mkdir -p $ANDROID_HOME/cmdline-tools -WORKDIR $ANDROID_HOME/cmdline-tools - -RUN wget https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O sdk-tools.zip \ +# ===== ANDROID SDK ===== +RUN mkdir -p ${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 \ && unzip sdk-tools.zip \ && rm sdk-tools.zip \ && mv cmdline-tools latest -# Принимаем лицензии и устанавливаем платформы +# Принимаем лицензии RUN yes | sdkmanager --licenses +# Устанавливаем только нужное RUN sdkmanager \ "platform-tools" \ - "platforms;android-34" \ - "build-tools;34.0.0" + "platforms;android-${ANDROID_API}" \ + "build-tools;${ANDROID_BUILD_TOOLS}" -# Установка Flutter -WORKDIR /opt -RUN git clone https://github.com/flutter/flutter.git -b stable +# ===== FLUTTER ===== +RUN git clone https://github.com/flutter/flutter.git \ + --branch ${FLUTTER_VERSION} \ + --depth 1 \ + ${FLUTTER_HOME} -# Предварительная инициализация -RUN flutter doctor -RUN flutter precache +# Precache только Android (без web, linux, macOS) +RUN flutter precache --android -# Рабочая директория -WORKDIR /app +# ===== GRADLE (предварительный warmup) ===== +RUN mkdir -p ${GRADLE_USER_HOME} + +# ===== ОЧИСТКА МУСОРА ===== +RUN rm -rf /root/.cache \ + && rm -rf ${ANDROID_HOME}/.android \ + && rm -rf /tmp/* + +WORKDIR /app \ No newline at end of file