Skip to content

Commit b46aaae

Browse files
committed
Dockerfile improvements for build performance
1 parent 6a27a80 commit b46aaae

File tree

1 file changed

+19
-18
lines changed

1 file changed

+19
-18
lines changed

Dockerfile

+19-18
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ FROM debian:stable-slim as foundry-builder
3838
# DOCKER_BUILDKIT=1 docker build . -t ...
3939
ARG TARGETARCH
4040
ARG MAXIMUM_THREADS=2
41+
ARG CARGO_INCREMENTAL=0
4142

4243
RUN export DEBIAN_FRONTEND=noninteractive && \
4344
apt update && \
@@ -54,6 +55,10 @@ RUN useradd --create-home -s /bin/bash xmtp
5455
RUN usermod -a -G sudo xmtp
5556
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
5657

58+
ENV FOUNDRY_ROOT=/usr/local/foundry
59+
ENV FOUNDRY_BIN=${FOUNDRY_ROOT}/bin
60+
RUN mkdir -p ${FOUNDRY_BIN}
61+
RUN chown -R xmtp:xmtp ${FOUNDRY_ROOT}
5762

5863
WORKDIR /rustup
5964
## Rust
@@ -69,24 +74,21 @@ WORKDIR /build
6974

7075
# latest https://github.com/foundry-rs/foundry
7176
ENV PATH=$PATH:~xmtp/.cargo/bin
72-
RUN git clone https://github.com/foundry-rs/foundry
7377

7478
WORKDIR /build/foundry
75-
RUN git pull && LATEST_TAG=$(git describe --tags --abbrev=0) || LATEST_TAG=master && \
76-
echo "building tag ${LATEST_TAG}" && \
77-
git -c advice.detachedHead=false checkout ${LATEST_TAG} && \
78-
. $HOME/.cargo/env && \
79+
ENV CARGO_INCREMENTAL=${CARGO_INCREMENTAL:-1}
80+
RUN . $HOME/.cargo/env && \
7981
THREAD_NUMBER=$(cat /proc/cpuinfo | grep -c ^processor) && \
8082
MAX_THREADS=$(( THREAD_NUMBER > ${MAXIMUM_THREADS} ? ${MAXIMUM_THREADS} : THREAD_NUMBER )) && \
8183
echo "building with ${MAX_THREADS} threads" && \
82-
cargo build --jobs ${MAX_THREADS} --release && \
83-
objdump -j .comment -s target/release/forge && \
84-
strip target/release/forge && \
85-
strip target/release/cast && \
86-
strip target/release/anvil && \
87-
strip target/release/chisel
88-
89-
RUN git rev-parse HEAD > /build/foundry_commit_sha256
84+
cargo install --git https://github.com/foundry-rs/foundry --tag nightly \
85+
--jobs ${MAX_THREADS} --root ${FOUNDRY_ROOT} --profile local \
86+
--locked forge cast chisel anvil && \
87+
objdump -j .comment -s ${FOUNDRY_BIN}/forge && \
88+
strip ${FOUNDRY_BIN}/forge && \
89+
strip ${FOUNDRY_BIN}/cast && \
90+
strip ${FOUNDRY_BIN}/anvil && \
91+
strip ${FOUNDRY_BIN}/chisel
9092

9193
FROM debian:stable-slim as node18-slim
9294

@@ -148,12 +150,11 @@ COPY --from=go-builder /usr/local/go /usr/local/go
148150
ARG ETH_VERSION=1.13.12
149151
COPY --from=go-builder /go-ethereum/go-ethereum-${ETH_VERSION}/build/bin /usr/local/bin
150152

153+
ENV FOUNDRY_ROOT=/usr/local/foundry
151154
# Foundry
152-
COPY --from=foundry-builder /build/foundry_commit_sha256 /usr/local/etc/foundry_commit_sha256
153-
COPY --from=foundry-builder /build/foundry/target/release/forge /usr/local/bin/forge
154-
COPY --from=foundry-builder /build/foundry/target/release/cast /usr/local/bin/cast
155-
COPY --from=foundry-builder /build/foundry/target/release/anvil /usr/local/bin/anvil
156-
COPY --from=foundry-builder /build/foundry/target/release/chisel /usr/local/bin/chisel
155+
COPY --from=foundry-builder ${FOUNDRY_ROOT} ${FOUNDRY_ROOT}
156+
157+
ENV PATH=${FOUNDRY_ROOT}/bin:${PATH}
157158

158159
LABEL org.label-schema.build-date=$BUILD_DATE \
159160
org.label-schema.name="foundry" \

0 commit comments

Comments
 (0)