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