diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml index 47611eaf2437..4fb18ac62e0b 100644 --- a/.github/workflows/docker.yaml +++ b/.github/workflows/docker.yaml @@ -24,23 +24,6 @@ jobs: - name: Checkout repository uses: actions/checkout@v3 - - name: Install Go - uses: actions/setup-go@v3 - with: - go-version: 1.21.x - - - uses: actions/cache@v3 - with: - path: | - ~/go/pkg/mod - ~/.cache/go-build - key: ${{ runner.os }}-go-${{ hashFiles('**/go.sum') }} - restore-keys: | - ${{ runner.os }}-go- - - - name: Build Binary - run: make geth - - name: Log in to the Container registry uses: docker/login-action@v2 with: diff --git a/Dockerfile.fh b/Dockerfile.fh index 229149f1dc3f..335c4c7b4c20 100644 --- a/Dockerfile.fh +++ b/Dockerfile.fh @@ -1,11 +1,27 @@ -FROM us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node:e87e5ef2b96893eb8b446da420f7ba7f3e3c5985 as optimism-node -FROM alpine:3.19.1 +# Build Geth in a stock Go builder container +FROM golang:1.22-alpine as builder -RUN DEBIAN_FRONTEND=noninteractive apt-get update && \ - apt-get -y install -y ca-certificates libssl1.1 +RUN apk add --no-cache gcc musl-dev linux-headers git +# Get dependencies - will also be cached if we won't change go.mod/go.sum +COPY go.mod /go-ethereum/ +COPY go.sum /go-ethereum/ +RUN cd /go-ethereum && go mod download + +ADD . /go-ethereum +RUN cd /go-ethereum && go run build/ci.go install -static ./cmd/geth ADD ./geth /app/geth ADD ./geth /usr/local/bin/geth -COPY --from=optimism-node /usr/local/bin/op-node /app/op-node -ENTRYPOINT /app/geth \ No newline at end of file + +# Pull Geth into a second stage deploy alpine container +FROM alpine:latest + +RUN apk add --no-cache ca-certificates +COPY --from=builder /go-ethereum/build/bin/geth /usr/local/bin/ + +FROM us-docker.pkg.dev/oplabs-tools-artifacts/images/op-node:e87e5ef2b96893eb8b446da420f7ba7f3e3c5985 + +COPY /usr/local/bin/op-node /app/op-node + +ENTRYPOINT /app/geth