prysm-pulse/Dockerfile.builder

48 lines
2.2 KiB
Docker
Raw Permalink Normal View History

# bazel-in-docker builder, for use with the build-in-docker.sh script and as a base image in pipelines
FROM ubuntu:22.04 as builder
# install build dependencies
RUN apt update && apt install -y cmake git libssl-dev libgmp-dev libtinfo5 unzip curl g++ python3 ca-certificates xz-utils
# install protoc at specific required version
RUN PROTOC_ZIP=protoc-3.14.0-linux-x86_64.zip && \
curl -OL https://github.com/protocolbuffers/protobuf/releases/download/v3.14.0/$PROTOC_ZIP && \
unzip -o $PROTOC_ZIP -d /usr/local bin/protoc && \
unzip -o $PROTOC_ZIP -d /usr/local 'include/*' && \
rm -f $PROTOC_ZIP
# install bazelisk
RUN curl -o bazelisk -L https://github.com/bazelbuild/bazelisk/releases/download/v1.14.0/bazelisk-linux-amd64 && \
chmod +x bazelisk && \
mv bazelisk /usr/local/bin && \
ln -s /usr/local/bin/bazelisk /usr/local/bin/bazel && \
bazelisk --version
# add the official docker certificates (for installing docker-cli)
RUN install -m 0755 -d /etc/apt/keyrings && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc && \
chmod a+r /etc/apt/keyrings/docker.asc
# add the official docker repository to apt sources
RUN echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" \
| tee /etc/apt/sources.list.d/docker.list > /dev/null
# install docker-cli for use in pipeline builds
RUN apt update && apt install -y docker-ce-cli
# create app placeholder
RUN mkdir /app
WORKDIR /app
# prevent git warnings throughout build process
RUN git config --global --add safe.directory /app
# this command is only run in local builds when using the build-in-docker script
# perform the build then print output directory mappings
CMD bazel build --config=release //cmd/beacon-chain:oci_tarball && \
bazel build --config=release //cmd/validator:oci_tarball && \
bazel build --config=release //cmd/prysmctl:oci_tarball && \
ls -l | grep -o bazel-.* | sed 's/\/root\/.cache/.bazel-in-docker-cache/g' | awk '{print "ln -sf " $3 " " $1}' > .bazel-in-docker-outputs && \
chmod 666 .bazel-in-docker-outputs