| # | |
| # Licensed to the Apache Software Foundation (ASF) under one | |
| # or more contributor license agreements. See the NOTICE file | |
| # distributed with this work for additional information | |
| # regarding copyright ownership. The ASF licenses this file | |
| # to you under the Apache License, Version 2.0 (the | |
| # "License"); you may not use this file except in compliance | |
| # with the License. You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| # | |
| # Dockerfile for installing the necessary dependencies for building Drill. | |
| # See BUILDING.txt. | |
| FROM ubuntu:20.04 | |
| ARG DEBIAN_FRONTEND=noninteractive | |
| WORKDIR /root | |
| SHELL ["/bin/bash", "-o", "pipefail", "-c"] | |
| ##### | |
| # Disable suggests/recommends | |
| ##### | |
| RUN echo APT::Install-Recommends "0"\; > /etc/apt/apt.conf.d/10disableextras | |
| RUN echo APT::Install-Suggests "0"\; >> /etc/apt/apt.conf.d/10disableextras | |
| ENV DEBIAN_FRONTEND noninteractive | |
| ENV DEBCONF_TERSE true | |
| # hadolint ignore=DL3008 | |
| RUN apt -q update \ | |
| && apt install -y software-properties-common apt-utils apt-transport-https \ | |
| # Repo for different Python versions | |
| && add-apt-repository -y ppa:deadsnakes/ppa \ | |
| && apt-get -q install -y --no-install-recommends \ | |
| ant \ | |
| bats \ | |
| bash-completion \ | |
| build-essential \ | |
| bzip2 \ | |
| ca-certificates \ | |
| clang \ | |
| cmake \ | |
| curl \ | |
| docker.io \ | |
| doxygen \ | |
| findbugs \ | |
| fuse \ | |
| g++ \ | |
| gcc \ | |
| git \ | |
| gnupg-agent \ | |
| libaio1 \ | |
| libbcprov-java \ | |
| libbz2-dev \ | |
| libcurl4-openssl-dev \ | |
| libfuse-dev \ | |
| libnuma-dev \ | |
| libncurses5 \ | |
| libprotobuf-dev \ | |
| libprotoc-dev \ | |
| libsasl2-dev \ | |
| libsnappy-dev \ | |
| libssl-dev \ | |
| libtool \ | |
| libzstd-dev \ | |
| locales \ | |
| make \ | |
| maven \ | |
| # openjdk-11-jdk \ | |
| openjdk-8-jdk \ | |
| pinentry-curses \ | |
| pkg-config \ | |
| python \ | |
| python2.7 \ | |
| # python-pip \ | |
| python-pkg-resources \ | |
| python-setuptools \ | |
| # python-wheel \ | |
| python3-setuptools \ | |
| python3-pip \ | |
| python3.5 \ | |
| python3.6 \ | |
| python3.7 \ | |
| python2.7 \ | |
| virtualenv \ | |
| tox \ | |
| rsync \ | |
| shellcheck \ | |
| software-properties-common \ | |
| sudo \ | |
| valgrind \ | |
| vim \ | |
| wget \ | |
| zlib1g-dev \ | |
| && apt-get clean \ | |
| && rm -rf /var/lib/apt/lists/* | |
| ### | |
| # Install grpcio-tools mypy-protobuf for `python3 sdks/python/setup.py sdist` to work | |
| ### | |
| RUN pip3 install grpcio-tools mypy-protobuf | |
| ### | |
| # Install Go | |
| ### | |
| RUN mkdir -p /goroot \ | |
| && curl https://dl.google.com/go/go1.15.2.linux-amd64.tar.gz | tar xvzf - -C /goroot --strip-components=1 \ | |
| && chmod a+rwX -R /goroot | |
| # Set environment variables for Go | |
| ENV GOROOT /goroot | |
| ENV GOPATH /gopath | |
| ENV PATH $GOROOT/bin:$GOPATH/bin:$PATH | |
| CMD go get github.com/linkedin/goavro | |
| ### | |
| # Miscelaneous fixes... | |
| ### | |
| # Turns out some build tools use 'time' and in this docker image this is no longer | |
| # an executable but ONLY an internal command of bash | |
| COPY time.sh /usr/bin/time | |
| RUN chmod 755 /usr/bin/time | |
| # Force the complete use of Java 8 | |
| RUN apt remove -y openjdk-11-jre openjdk-11-jre-headless | |
| ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/ | |
| ### | |
| # Avoid out of memory errors in builds | |
| ### | |
| ENV MAVEN_OPTS -Xmx4g -XX:MaxPermSize=512m | |
| ### | |
| # Add a welcome message and environment checks. | |
| ### | |
| RUN mkdir /scripts | |
| COPY drill_env_checks.sh /scripts/drill_env_checks.sh | |
| COPY bashcolors.sh /scripts/bashcolors.sh | |
| RUN chmod 755 /scripts /scripts/drill_env_checks.sh /scripts/bashcolors.sh | |
| # hadolint ignore=SC2016 | |
| RUN echo '. /etc/bash_completion' >> /root/.bash_aliases | |
| RUN echo '. /scripts/drill_env_checks.sh' >> /root/.bash_aliases |