Skip to content
Snippets Groups Projects
Select Git revision
  • master default protected
  • st-1502-pytango-9.4.0
  • st-1426-test-tango-9_4_0
  • low-359-named-pvc
  • st-1381-base-image-to-ubuntu
  • bang-26
  • low-331-alpine-poetry-image
  • st-1260-delete-depencies
  • at6-1082-mount-host-path
  • st-974-probes-for-tangodb
  • test-pipeline
  • st-966-changelog-template-job
  • st-915-pytango
  • st-933-publish-raw-packages
  • sar-313-exploratory-work
  • ST-758
  • at6-700-image
  • st-581-car
  • AT1-709-configure-archiver-script
  • st-565
  • 0.4.3
  • 0.4.2
  • 0.4.1
  • 0.4.0
  • 0.3.26
  • 0.3.25
  • 0.3.24
  • 0.3.23
  • 0.3.22
  • 0.3.21
  • 0.3.20
  • 0.3.19
  • 0.3.18
  • 0.3.17
  • 0.3.16
  • 0.3.15
  • 0.3.14
  • 0.3.13
  • 0.3.12
  • 0.3.11
40 results

Dockerfile

Blame
  • 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