Select Git revision
-
Matteo Di Carlo authoredMatteo Di Carlo authored
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Dockerfile 2.71 KiB
#
# This Dockerfile builds base Tango (C++ only, no Java or Python) in an
# intermediate image, then creates a release image containing the compiled
# binaries.
#
ARG DOCKER_REGISTRY_USER
ARG DOCKER_REGISTRY_HOST
FROM ${DOCKER_REGISTRY_HOST}/${DOCKER_REGISTRY_USER}/tango-dependencies:latest as buildenv
RUN TANGO_DOWNLOAD_URL=https://nexus.engageska-portugal.pt/repository/raw/tango-cs/tango-9.3.3-rc2.tar.gz \
# Speed up image builds by adding apt proxy if detected on host
&& DOCKERHOST=`awk '/^[a-z]+[0-9]+\t00000000/ { printf("%d.%d.%d.%d", "0x" substr($3, 7, 2), "0x" substr($3, 5, 2), "0x" substr($3, 3, 2), "0x" substr($3, 1, 2)) }' < /proc/net/route` \
&& /usr/local/bin/wait-for-it.sh --host=$DOCKERHOST --port=3142 --timeout=3 --strict --quiet -- echo "Acquire::http::Proxy \"http://$DOCKERHOST:3142\";" > /etc/apt/apt.conf.d/30proxy \
&& echo "Proxy detected on docker host - using for this build" || echo "No proxy detected on docker host" \
&& buildDeps='build-essential ca-certificates curl file libmariadbclient-dev libmariadbclient-dev-compat pkg-config python' \
&& DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends $buildDeps \
&& rm -rf /var/lib/apt/lists/* \
&& mkdir -p /usr/src/tango \
&& cd /usr/src/tango \
&& curl -fsSL "$TANGO_DOWNLOAD_URL" -o tango.tar.gz \
&& tar xf tango.tar.gz -C /usr/src/tango --strip-components=1 \
&& ./configure --with-zmq=/usr/local --with-omni=/usr/local --with-mysqlclient-prefix=/usr --enable-static=no \
&& make -C /usr/src/tango -j$(nproc) \
&& make -C /usr/src/tango install \
&& ldconfig \
&& apt-get purge -y --auto-remove $buildDeps \
&& rm -r /usr/src/tango
FROM debian:buster-slim
COPY --from=buildenv /usr/local /usr/local
RUN runtimeDeps='libmariadb3 sudo' \
&& DOCKERHOST=`awk '/^[a-z]+[0-9]+\t00000000/ { printf("%d.%d.%d.%d", "0x" substr($3, 7, 2), "0x" substr($3, 5, 2), "0x" substr($3, 3, 2), "0x" substr($3, 1, 2)) }' < /proc/net/route` \
&& /usr/local/bin/wait-for-it.sh --host=$DOCKERHOST --port=3142 --timeout=3 --strict --quiet -- echo "Acquire::http::Proxy \"http://$DOCKERHOST:3142\";" > /etc/apt/apt.conf.d/30proxy \
&& echo "Proxy detected on docker host - using for this build" || echo "No proxy detected on docker host" \
&& DEBIAN_FRONTEND=noninteractive apt-get update \
&& DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends $runtimeDeps \
&& rm -rf /var/lib/apt/lists/* \
&& rm -f /etc/apt/apt.conf.d/30proxy
RUN useradd --create-home --home-dir /home/tango tango
RUN echo "tango ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/tango \
&& chmod 0440 /etc/sudoers.d/tango
USER tango