-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDockerfile
More file actions
115 lines (97 loc) · 4.1 KB
/
Dockerfile
File metadata and controls
115 lines (97 loc) · 4.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# Global build arguments
ARG BUILD_PROFILE=release
ARG FEATURES="rocksdb"
# Stage 1: Base image with Rust
FROM rust:slim-bookworm AS builder
ARG BUILD_PROFILE
ARG FEATURES
WORKDIR /app
# Install build dependencies
RUN --mount=type=cache,target=/var/cache/apt \
--mount=type=cache,target=/var/lib/apt \
apt-get update && \
apt-get install -y libclang-dev pkg-config build-essential libssl-dev curl git && \
rm -rf /var/lib/apt/lists/*
# Stage 2: Build
FROM builder AS build
COPY . .
# Perform `cargo build` only with packages that we want images for. Avoid heavy ZK deps
RUN --mount=type=cache,target=/usr/local/cargo,from=rust:slim-bookworm,source=/usr/local/cargo \
cargo build --package synd-batch-sequencer --package synd-chain-ingestor --package synd-maestro --package synd-mchain --features ${FEATURES} --package synd-translator --profile ${BUILD_PROFILE}
# --- Go build stage for synd-proposer ---
FROM ghcr.io/syndicateprotocol/syndicate-appchains/node-builder AS nitro
FROM golang:1.25.3-bookworm AS synd-proposer-build
WORKDIR /
COPY --from=nitro /workspace ./synd-enclave/nitro
COPY ./synd-withdrawals/synd-enclave/enclave ./synd-enclave/enclave
COPY ./synd-withdrawals/synd-enclave/teemodule ./synd-enclave/teemodule
COPY ./synd-withdrawals/synd-enclave/teetypes ./synd-enclave/teetypes
COPY ./synd-withdrawals/synd-enclave/go.mod ./synd-withdrawals/synd-enclave/go.sum ./synd-enclave/
COPY ./synd-withdrawals/synd-proposer ./synd-proposer
# Build the Go image
WORKDIR /synd-proposer
RUN CGO_ENABLED=1 go build -o /go/bin/synd-proposer ./cmd/synd-proposer/main.go
# Run tests for synd-proposer
FROM synd-proposer-build AS synd-proposer-test
WORKDIR /synd-proposer
RUN go test ./...
# Stage 3: Optional Foundry install
FROM debian:bookworm-slim AS foundry
RUN apt-get update && \
apt-get install -y --no-install-recommends \
curl \
git \
ca-certificates && \
curl -L https://foundry.paradigm.xyz | bash && \
~/.foundry/bin/foundryup && \
rm -rf /var/lib/apt/lists/*
# Stage 3: Runtime images
# `nonroot` tag creates a `nonroot` non-privileged user with UID 65532
FROM gcr.io/distroless/cc:nonroot AS runtime-base
# Runtime images
FROM runtime-base AS synd-translator
ARG BUILD_PROFILE
COPY --from=build /app/target/${BUILD_PROFILE}/synd-translator /usr/local/bin/synd-translator
COPY --from=foundry /root/.foundry /root/.foundry
ENV PATH="/root/.foundry/bin:${PATH}"
ENTRYPOINT ["/usr/local/bin/synd-translator"]
EXPOSE 8545 8546
LABEL service=synd-translator
FROM runtime-base AS synd-proposer
COPY --from=synd-proposer-build /go/bin/synd-proposer /usr/local/bin/synd-proposer
ENTRYPOINT ["/usr/local/bin/synd-proposer"]
LABEL service=synd-proposer
FROM runtime-base AS synd-maestro
ARG BUILD_PROFILE
COPY --from=build /app/target/${BUILD_PROFILE}/synd-maestro /usr/local/bin/synd-maestro
ENTRYPOINT ["/usr/local/bin/synd-maestro"]
EXPOSE 8545 8546
LABEL service=synd-maestro
FROM runtime-base AS synd-batch-sequencer
ARG BUILD_PROFILE
COPY --from=build /app/target/${BUILD_PROFILE}/synd-batch-sequencer /usr/local/bin/synd-batch-sequencer
ENTRYPOINT ["/usr/local/bin/synd-batch-sequencer"]
EXPOSE 8545 8546
LABEL service=synd-batch-sequencer
FROM runtime-base AS synd-mchain
ARG BUILD_PROFILE
COPY --from=build /app/target/${BUILD_PROFILE}/synd-mchain /usr/local/bin/synd-mchain
ENTRYPOINT ["/usr/local/bin/synd-mchain"]
EXPOSE 8545 8546
LABEL service=synd-mchain
FROM runtime-base AS synd-chain-ingestor
ARG BUILD_PROFILE
COPY --from=build /app/target/${BUILD_PROFILE}/synd-chain-ingestor /usr/local/bin/synd-chain-ingestor
ENTRYPOINT ["/usr/local/bin/synd-chain-ingestor"]
EXPOSE 8545 8546
LABEL service=synd-chain-ingestor
# --------- Debugging image for translator ---------
FROM ubuntu:22.04 AS synd-translator-debug
ARG BUILD_PROFILE
RUN apt-get update && apt-get install -y heaptrack libssl3 ca-certificates && rm -rf /var/lib/apt/lists/*
COPY --from=build /app/target/${BUILD_PROFILE}/synd-translator /usr/local/bin/synd-translator
COPY --from=foundry /root/.foundry /root/.foundry
ENV PATH="/root/.foundry/bin:${PATH}"
ENTRYPOINT ["/usr/local/bin/synd-translator"]
EXPOSE 8545 8546
LABEL service=synd-translator