使用ubuntu:20.04和ubuntu:jammy构建secretflow环境

发布于:2025-07-24 ⋅ 阅读:(23) ⋅ 点赞:(0)

一、使用ubuntu:20.04构建隐语编译环境

FROM ubuntu:20.04

LABEL maintainer="build SecureProtocolLib on ubuntu:20.04"

ARG TARGETPLATFORM

# change dash to bash as default shell
RUN ln -sf /bin/bash /bin/sh


RUN apt update \
    && apt upgrade -y \
    && apt install -y software-properties-common \
    && add-apt-repository -y ppa:ubuntu-toolchain-r/test \
    && apt upgrade -y \
    && apt install -y gcc-11 g++-11 libasan6 \
    git wget curl unzip autoconf build-essential libssl-dev lld\
    ninja-build vim-common libgl1 libglib2.0-0 \
    && DEBIAN_FRONTEND=noninteractive apt install -y tzdata \
    && apt clean \
    && update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 100 \
    && update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100 


# install cmake
RUN if [ "$TARGETPLATFORM" = "linux/arm64" ] ; then CONDA_ARCH=aarch64 ; else CONDA_ARCH=x86_64 ; fi \
    && curl -sL https://github.com/Kitware/CMake/releases/download/v3.26.1/cmake-3.26.1-linux-$CONDA_ARCH.sh -o cmakeinstall.sh \
    && chmod +x cmakeinstall.sh \
    && ./cmakeinstall.sh --prefix=/usr/local/bin/ --exclude-subdir \
    && rm cmakeinstall.sh \
    && ln -s /usr/local/bin/cmake  /usr/bin/cmake


# clang is required on arm64 platform
RUN if [ "$TARGETPLATFORM" = "linux/arm64" ] ; then \
    echo "deb http://apt.llvm.org/focal/ llvm-toolchain-focal-15 main" > /etc/apt/sources.list.d/llvm.list \
    && echo "deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-15 main" >> /etc/apt/sources.list.d/llvm.list \
    && wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add - \
    && apt update \
    && apt install -y clang-15 \
    && apt clean \
    && update-alternatives --install /usr/bin/clang clang /usr/bin/clang-15 100 \
    && update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-15 100 \
; fi


# amd64 is only reqiured on amd64 platform
RUN if [ "$TARGETPLATFORM" = "linux/amd64" ] ; then apt install -y nasm ; fi

# install conda
RUN if [ "$TARGETPLATFORM" = "linux/arm64" ] ; then CONDA_ARCH=aarch64 ; else CONDA_ARCH=x86_64 ; fi \
    && wget https://repo.anaconda.com/miniconda/Miniconda3-py38_23.11.0-2-Linux-$CONDA_ARCH.sh \
    && bash Miniconda3-py38_23.11.0-2-Linux-$CONDA_ARCH.sh -b \
    && rm -f Miniconda3-py38_23.11.0-2-Linux-$CONDA_ARCH.sh \
    && /root/miniconda3/bin/conda init

# Add conda to path
ENV PATH="/root/miniconda3/bin:${PATH}"

# install bazel
RUN if [ "$TARGETPLATFORM" = "linux/arm64" ] ; then BAZEL_ARCH=arm64 ; else BAZEL_ARCH=amd64 ; fi \
    && wget https://github.com/bazelbuild/bazelisk/releases/download/v1.25.0/bazelisk-linux-$BAZEL_ARCH \
    && mv bazelisk-linux-$BAZEL_ARCH /usr/bin/bazelisk \
    && chmod +x /usr/bin/bazelisk \
    && ln -s /usr/bin/bazelisk /usr/bin/bazel

# run as root for now
WORKDIR /home/admin/

ENTRYPOINT [ "/bin/bash", "-lc" ]

二、使用ubuntu:jammy编译secretflow环境

FROM ubuntu:jammy

LABEL maintainer="secretflow-contact@service.alipay.com"

ARG TARGETPLATFORM

# change dash to bash as default shell
RUN ln -sf /bin/bash /bin/sh

RUN apt update \
    && apt upgrade -y \
    && apt install -y gcc-11 g++-11 libasan6 \
    git wget curl unzip autoconf make lld-15 \
    cmake ninja-build vim-common libgl1 libglib2.0-0 \
    && DEBIAN_FRONTEND=noninteractive apt install -y tzdata \
    && apt clean \
    && update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 100 \
    && update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100 \
    && update-alternatives --install /usr/bin/ld.lld ld.lld /usr/bin/ld.lld-15 100

# clang is required on arm64 platform
RUN if [ "$TARGETPLATFORM" = "linux/arm64" ] ; then apt install -y clang-15 \
    && apt clean \
    && update-alternatives --install /usr/bin/clang clang /usr/bin/clang-15 100 \
    && update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-15 100 \
; fi


# amd64 is only reqiured on amd64 platform
RUN if [ "$TARGETPLATFORM" = "linux/amd64" ] ; then apt install -y nasm ; fi

# install conda
RUN if [ "$TARGETPLATFORM" = "linux/arm64" ] ; then CONDA_ARCH=aarch64 ; else CONDA_ARCH=x86_64 ; fi \
    && wget https://repo.anaconda.com/miniconda/Miniconda3-py38_23.11.0-2-Linux-$CONDA_ARCH.sh \
    && bash Miniconda3-py38_23.11.0-2-Linux-$CONDA_ARCH.sh -b \
    && rm -f Miniconda3-py38_23.11.0-2-Linux-$CONDA_ARCH.sh \
    && /root/miniconda3/bin/conda init

# Add conda to path
ENV PATH="/root/miniconda3/bin:${PATH}"

# install bazel
RUN if [ "$TARGETPLATFORM" = "linux/arm64" ] ; then BAZEL_ARCH=arm64 ; else BAZEL_ARCH=amd64 ; fi \
    && wget https://github.com/bazelbuild/bazelisk/releases/download/v1.25.0/bazelisk-linux-$BAZEL_ARCH \
    && mv bazelisk-linux-$BAZEL_ARCH /usr/bin/bazelisk \
    && chmod +x /usr/bin/bazelisk \
    && ln -s /usr/bin/bazelisk /usr/bin/bazel

# run as root for now
WORKDIR /home/admin/

ENTRYPOINT [ "/bin/bash", "-lc" ]