# Flutter (https://flutter.dev) Development Environment for Linux # =============================================================== # # This environment passes all Linux Flutter Doctor checks and is sufficient # for building Android applications and running Flutter tests. # # To build iOS applications, a Mac development environment is necessary. # # This includes applications and sdks that are needed only by the CI system # for performing pushes to production, and so this image is quite a bit larger # than strictly needed for just building Flutter apps. # Last manual update 2021-09-24 (changing this comment will re-build image) FROM debian@sha256:f6957458017ec31c4e325a76f39d6323c4c21b0e31572efa006baa927a160891 MAINTAINER Flutter Developers <flutter-dev@googlegroups.com> RUN apt-get update -y && \ apt-get upgrade -y # Install basics RUN apt-get install -y --no-install-recommends \ git \ wget \ curl \ zip \ unzip \ apt-transport-https \ ca-certificates \ gnupg # Add repo for chrome stable RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - RUN echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | \ tee /etc/apt/sources.list.d/google-chrome.list # Add repo for gcloud sdk and install it RUN echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | \ tee -a /etc/apt/sources.list.d/google-cloud-sdk.list RUN curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | \ apt-key --keyring /usr/share/keyrings/cloud.google.gpg add - RUN apt-get update && apt-get install -y google-cloud-sdk && \ gcloud config set core/disable_usage_reporting true && \ gcloud config set component_manager/disable_update_check true # Add repo for OpenJDK 8 from JFrog.io RUN wget -q -O - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | apt-key add - RUN echo 'deb [arch=amd64] https://adoptopenjdk.jfrog.io/adoptopenjdk/deb bullseye main' | \ tee /etc/apt/sources.list.d/adoptopenjdk.list # Install the dependencies needed for the rest of the build. RUN apt-get update && apt-get install -y --no-install-recommends \ adoptopenjdk-8-hotspot \ build-essential \ default-jdk-headless \ gcc \ google-chrome-stable \ lib32stdc++6 \ libglu1-mesa \ libstdc++6 \ locales \ nodejs \ npm \ ruby \ ruby-dev && \ apt-get clean ENV JAVA_HOME="/usr/lib/jvm/adoptopenjdk-8-hotspot-amd64" # Install the Android SDK Dependency. ENV ANDROID_SDK_URL="https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip" ENV ANDROID_TOOLS_ROOT="/opt/android_sdk" RUN mkdir -p "${ANDROID_TOOLS_ROOT}" RUN mkdir -p ~/.android # Silence warning. RUN touch ~/.android/repositories.cfg ENV ANDROID_SDK_ARCHIVE="${ANDROID_TOOLS_ROOT}/archive" RUN wget --progress=dot:giga "${ANDROID_SDK_URL}" -O "${ANDROID_SDK_ARCHIVE}" RUN unzip -q -d "${ANDROID_TOOLS_ROOT}" "${ANDROID_SDK_ARCHIVE}" # Suppressing output of sdkmanager to keep log size down # (it prints install progress WAY too often). RUN yes "y" | "${ANDROID_TOOLS_ROOT}/tools/bin/sdkmanager" "tools" > /dev/null RUN yes "y" | "${ANDROID_TOOLS_ROOT}/tools/bin/sdkmanager" "build-tools;28.0.3" > /dev/null RUN yes "y" | "${ANDROID_TOOLS_ROOT}/tools/bin/sdkmanager" "platforms;android-30" > /dev/null RUN yes "y" | "${ANDROID_TOOLS_ROOT}/tools/bin/sdkmanager" "platform-tools" > /dev/null RUN yes "y" | "${ANDROID_TOOLS_ROOT}/tools/bin/sdkmanager" "cmdline-tools;latest" > /dev/null RUN yes "y" | "${ANDROID_TOOLS_ROOT}/tools/bin/sdkmanager" "extras;android;m2repository" > /dev/null RUN yes "y" | "${ANDROID_TOOLS_ROOT}/tools/bin/sdkmanager" "extras;google;m2repository" > /dev/null RUN yes "y" | "${ANDROID_TOOLS_ROOT}/tools/bin/sdkmanager" "patcher;v4" > /dev/null RUN rm "${ANDROID_SDK_ARCHIVE}" ENV PATH="${ANDROID_TOOLS_ROOT}/tools:${PATH}" ENV PATH="${ANDROID_TOOLS_ROOT}/tools/bin:${PATH}" # Silence warnings when accepting android licenses. RUN mkdir -p ~/.android RUN touch ~/.android/repositories.cfg # Add npm to path. ENV PATH="/usr/bin:${PATH}" # Set locale to en_US RUN locale-gen en_US "en_US.UTF-8" && DEBIAN_FRONTEND=noninteractive dpkg-reconfigure locales ENV LANG en_US.UTF-8 # Install dependencies for desktop flutter run RUN apt-get install -y --no-install-recommends \ clang \ cmake \ libgtk-3-dev \ ninja-build \ pkg-config \ x11-xserver-utils \ xauth \ xvfb && \ apt-get upgrade -y --no-install-recommends && \ apt-get clean