github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/Dockerfile (about) 1 # build gno 2 FROM golang:1.22 AS build-gno 3 RUN mkdir -p /opt/gno/src /opt/build 4 WORKDIR /opt/build 5 ADD go.mod go.sum . 6 RUN go mod download 7 ADD . ./ 8 RUN go build -o ./build/gnoland ./gno.land/cmd/gnoland 9 RUN go build -o ./build/gnokey ./gno.land/cmd/gnokey 10 RUN go build -o ./build/gnoweb ./gno.land/cmd/gnoweb 11 RUN go build -o ./build/gno ./gnovm/cmd/gno 12 RUN ls -la ./build 13 ADD . /opt/gno/src/ 14 RUN rm -rf /opt/gno/src/.git 15 16 # build faucet 17 FROM golang:1.22 AS build-faucet 18 RUN mkdir -p /opt/gno/src /opt/build 19 WORKDIR /opt/build 20 ADD contribs/gnofaucet/go.mod contribs/gnofaucet/go.sum . 21 RUN go mod download 22 ADD contribs/gnofaucet ./ 23 RUN go build -o ./build/gnofaucet . 24 25 26 # runtime-base + runtime-tls 27 FROM debian:stable-slim AS runtime-base 28 ENV PATH="${PATH}:/opt/gno/bin" \ 29 GNOROOT="/opt/gno/src" 30 WORKDIR /opt/gno/src 31 FROM runtime-base AS runtime-tls 32 RUN apt-get update && apt-get install -y expect ca-certificates && update-ca-certificates 33 34 # slim images 35 FROM runtime-base AS gnoland-slim 36 WORKDIR /opt/gno/src/gno.land/ 37 COPY --from=build-gno /opt/build/build/gnoland /opt/gno/bin/ 38 ENTRYPOINT ["gnoland"] 39 EXPOSE 26657 36657 40 41 FROM runtime-base AS gnokey-slim 42 COPY --from=build-gno /opt/build/build/gnokey /opt/gno/bin/ 43 ENTRYPOINT ["gnokey"] 44 45 FROM runtime-base AS gno-slim 46 COPY --from=build-gno /opt/build/build/gno /opt/gno/bin/ 47 ENTRYPOINT ["gno"] 48 49 FROM runtime-tls AS gnofaucet-slim 50 COPY --from=build-faucet /opt/build/build/gnofaucet /opt/gno/bin/ 51 ENTRYPOINT ["gnofaucet"] 52 EXPOSE 5050 53 54 FROM runtime-tls AS gnoweb-slim 55 COPY --from=build-gno /opt/build/build/gnoweb /opt/gno/bin/ 56 COPY --from=build-gno /opt/gno/src/gno.land/cmd/gnoweb /opt/gno/src/gnoweb 57 ENTRYPOINT ["gnoweb"] 58 EXPOSE 8888 59 60 # all, contains everything. 61 FROM runtime-tls AS all 62 COPY --from=build-gno /opt/build/build/* /opt/gno/bin/ 63 COPY --from=build-faucet /opt/build/build/* /opt/gno/bin/ 64 COPY --from=build-gno /opt/gno/src /opt/gno/src 65 # gofmt is required by `gnokey maketx addpkg` 66 COPY --from=build-gno /usr/local/go/bin/gofmt /usr/bin