# Flutter (https://flutter.io) Developement 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. FROM debian:stretch MAINTAINER Flutter Developers <flutter-dev@googlegroups.com> RUN apt-get update -y RUN apt-get upgrade -y # Install basics RUN apt-get install -y --no-install-recommends \ git \ wget \ curl \ unzip \ ca-certificates \ gnupg # Add nodejs repository to apt sources and install it. ENV NODEJS_INSTALL="/opt/nodejs_install" RUN mkdir -p "${NODEJS_INSTALL}" RUN wget -q https://deb.nodesource.com/setup_10.x -O "${NODEJS_INSTALL}/nodejs_install.sh" RUN bash "${NODEJS_INSTALL}/nodejs_install.sh" # Install the rest of the dependencies. RUN apt-get install -y --no-install-recommends \ locales \ ruby \ ruby-dev \ nodejs \ lib32stdc++6 \ libstdc++6 \ libglu1-mesa \ build-essential \ default-jdk-headless # 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.0" > /dev/null RUN yes "y" | "${ANDROID_TOOLS_ROOT}/tools/bin/sdkmanager" "platforms;android-28" > /dev/null RUN yes "y" | "${ANDROID_TOOLS_ROOT}/tools/bin/sdkmanager" "platform-tools" > /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 # Setup gradle ENV GRADLE_ROOT="/opt/gradle" RUN mkdir -p "${GRADLE_ROOT}" ENV GRADLE_ARCHIVE="${GRADLE_ROOT}/gradle.zip" ENV GRADLE_URL="http://services.gradle.org/distributions/gradle-4.4-bin.zip" RUN wget --progress=dot:giga "$GRADLE_URL" -O "${GRADLE_ARCHIVE}" RUN unzip -q -d "${GRADLE_ROOT}" "${GRADLE_ARCHIVE}" ENV PATH="$GRADLE_ROOT/bin:$PATH" # Add npm to path. ENV PATH="/usr/bin:${PATH}" RUN dpkg-query -L nodejs # Install Firebase RUN /usr/bin/npm install -g git://github.com/firebase/firebase-tools.git # Set locale to en_US RUN locale-gen en_US "en_US.UTF-8" && dpkg-reconfigure locales ENV LANG en_US.UTF-8 # Install coveralls and Firebase RUN gem install coveralls RUN gem install bundler