refactor: optimize Dockerfile for Flutter Android environment
This commit is contained in:
+38
-17
@@ -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) =====
|
||||||
|
RUN mkdir -p ${GRADLE_USER_HOME}
|
||||||
|
|
||||||
|
# ===== ОЧИСТКА МУСОРА =====
|
||||||
|
RUN rm -rf /root/.cache \
|
||||||
|
&& rm -rf ${ANDROID_HOME}/.android \
|
||||||
|
&& rm -rf /tmp/*
|
||||||
|
|
||||||
# Рабочая директория
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
Reference in New Issue
Block a user