blob: 85815163e2f57b32cbc1b78d2514685f8bd13bde [file]
################################################################################
# Dockerfile to setup a Debian / Ubuntu type docker image, suitable
# for building ATS, perhaps as part of a Jenkins CI. Note that some
# of the features in here are specific to the official ATS Jenkins
# setup, see comment below.
#
# 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.
################################################################################
# These can (should?) be overridden from the command line with ----build-arg, e.g.
# docker build --build-arg OS_VERSION=19.10 --build-arg OS_TYPE=ubuntu
#
ARG OS_VERSION=19.10
ARG OS_TYPE=ubuntu
# This does currently not work, e.g. this I'd expect to make it conditional:
#
# RUN if [ "${ADD_JENKINS}" = "yes" ]; then apt-get ...
#
ARG ADD_JENKINS=no
# Alright, lets pull in the base image from docker.io
FROM ${OS_TYPE}:${OS_VERSION}
################################################################################
# All the Debian packages necessary for building ATS. you do not need all
# these if you only intend to run ATS!
#
# This runs all the DEB installations, starting with a system level update. tzdata
# needs to be installed, because TCL needs it, and we need this non-interactive.
# ToDo: Remove tzdata when TCL is fully gone
RUN apt-get update; apt-get -y dist-upgrade; \
DEBIAN_FRONTEND=noninteractive apt-get -y install tzdata apt-utils; \
# Compilers
apt-get -y install ccache make pkgconf bison flex g++ clang gettext libc++-dev \
# Autoconf
autoconf automake libtool autotools-dev dh-apparmor debhelper \
# Various other tools
git distcc file wget openssl hwloc intltool-debian; \
# Devel packages that ATS needs
apt-get -y install libssl-dev libexpat1-dev libpcre3-dev libcap-dev \
libhwloc-dev libunwind8 libunwind-dev zlib1g-dev \
tcl-dev tcl8.6-dev libjemalloc-dev libluajit-5.1-dev liblzma-dev \
libhiredis-dev libbrotli-dev libncurses-dev libgeoip-dev libmagick++-dev \
libzstd-dev; \
# Optional: This is for the OpenSSH server, and Jenkins account + access (comment out if not needed)
apt-get -y install openssh-server openjdk-8-jre && mkdir /run/sshd; \
groupadd -g 665 jenkins && \
useradd -g jenkins -u 989 -s /bin/bash -M -d /home/jenkins -c "Jenkins Continuous Build server" jenkins && \
mkdir -p /var/jenkins && chown jenkins.jenkins /var/jenkins
# This is for autest stuff, skipping since it's pulling in a *lot* ...
# apt-get -y install python3 httpd-tools procps-ng nmap-ncat \
# python3-virtualenv python3-gunicorn python3-requests python3-httpbin; \
# Install uv for Python environment management:
# curl -LsSf https://astral.sh/uv/install.sh | sh