blob: c8de67ad76773ba788d10bbe3209e3463512f881 [file] [log] [blame]
# 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
#
# https://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 Avro.
# See BUILD.txt.
# Despite this base, JDK8 is used by default. See below.
FROM openjdk:11-stretch
WORKDIR /root
ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=isolemnlysweariamuptonogood \
DEBIAN_FRONTEND=noninteractive
# Install dependencies from vanilla system packages
RUN apt-get -qqy update \
&& apt-get -qqy install --no-install-recommends ant \
apt-transport-https \
apt-utils \
asciidoc \
bison \
bzip2 \
bundler \
cmake \
cppcheck \
curl \
doxygen \
flex \
g++ \
gcc \
git \
libboost-all-dev \
libfontconfig1-dev \
libfreetype6-dev \
libglib2.0-dev \
libjansson-dev \
libsnappy-dev \
libsnappy1v5 \
make \
maven \
mypy \
openjdk-8-jdk \
perl \
python \
python-pip \
python-setuptools \
python-snappy \
python-wheel \
python3-pip \
python3-setuptools \
python3-snappy \
python3-wheel \
rake \
ruby \
ruby-dev \
source-highlight \
subversion \
valgrind \
&& apt-get -qqy clean \
&& rm -rf /var/lib/apt/lists
# Install nodejs 6
RUN curl -sSL https://deb.nodesource.com/setup_10.x \
| bash - \
&& apt-get -qqy install nodejs \
&& apt-get -qqy clean \
&& rm -rf /var/lib/apt/lists \
&& npm install -g grunt-cli \
&& npm cache clean --force
# Install PHP
ENV PHP7_VERSION=7.3
RUN curl -sSL https://packages.sury.org/php/apt.gpg \
| apt-key add --no-tty - \
&& echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list \
&& apt-get -qqy update \
&& apt-get -qqy install --no-install-recommends libzstd-dev \
libbz2-dev \
php${PHP7_VERSION} \
php${PHP7_VERSION}-bz2 \
php${PHP7_VERSION}-gmp \
php${PHP7_VERSION}-xml \
php${PHP7_VERSION}-mbstring \
php${PHP7_VERSION}-dev \
&& mkdir tmp && cd tmp \
&& git clone --recursive --depth=1 https://github.com/kjdev/php-ext-zstd.git \
&& cd php-ext-zstd \
&& phpize \
&& ./configure \
&& make \
&& make install \
&& echo "extension=zstd.so" > /etc/php/7.3/cli/conf.d/10-zstd.ini \
&& cd .. && rm -rf php-ext-zstd \
&& git clone --recursive --depth=1 https://github.com/kjdev/php-ext-snappy.git \
&& cd php-ext-snappy \
&& phpize \
&& ./configure \
&& make \
&& make install \
&& echo "extension=snappy.so" > /etc/php/7.3/cli/conf.d/10-snappy.ini \
&& cd .. && rm -rf php-ext-snappy \
&& php -m \
&& apt-get -qqy clean \
&& rm -rf /var/lib/apt/lists
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
# Install Perl modules
RUN apt-get -qqy update \
&& apt-get -qqy install --no-install-recommends libcompress-raw-zlib-perl \
libencode-perl \
libio-string-perl \
libjson-xs-perl \
libmodule-install-perl \
libmodule-install-readmefrompod-perl \
libobject-tiny-perl \
libperl-critic-perl \
libregexp-common-perl \
libtest-exception-perl \
libtest-pod-perl \
libtry-tiny-perl \
&& apt-get -qqy clean \
&& rm -rf /var/lib/apt/lists
RUN curl -sSL https://cpanmin.us \
| perl - --self-upgrade \
&& cpanm --mirror https://www.cpan.org/ install Compress::Zstd \
Module::Install::Repository \
&& rm -rf .cpanm
# Install Python packages
ENV PIP_NO_CACHE_DIR=off
# Install Python2 packages
RUN python2 -m pip install --upgrade pip setuptools wheel \
&& python2 -m pip install zstandard
# Install Python3 packages
RUN python3 -m pip install --upgrade pip setuptools wheel \
&& python3 -m pip install tox zstandard
# Install .NET SDK
RUN curl -sSLO https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb \
&& dpkg -i packages-microsoft-prod.deb \
&& rm packages-microsoft-prod.deb \
&& apt-get -qqy update \
&& apt-get -qqy install --no-install-recommends dotnet-sdk-3.1 \
&& apt-get -qqy clean \
&& rm -rf /var/lib/apt/lists
# Install Ruby modules
COPY lang/ruby/Gemfile /tmp
RUN bundle install --gemfile=/tmp/Gemfile
# Note: This "ubertool" container has two JDK versions:
# - OpenJDK 8 (installed as a package and available at /usr/bin/java)
# - OpenJDK 11 (installed from the base image, and prioritized in the PATH)
# - The root build.sh script switches between the versions according to
# the JAVA environment variable.
# Since want the JDK8 as a default, we have to re-prepend it to the PATH.
# The /usr/local/openjdk-8 link is created to be consistent with the
# openjdk:8 image.
RUN ln -s /usr/lib/jvm/java-8-openjdk-amd64 /usr/local/openjdk-8
ENV JAVA_HOME /usr/local/openjdk-8
ENV PATH $JAVA_HOME/bin:$PATH
CMD ["/bin/bash", "-i"]