|
| 1 | +FROM golang:1.19-buster AS builder |
| 2 | +MAINTAINER IPFS Stewards < [email protected]> |
| 3 | + |
| 4 | +# This dockerfile builds and runs bifrost-gateway |
| 5 | + |
| 6 | +ENV GOPATH /go |
| 7 | +ENV SRC_PATH $GOPATH/src/github.com/ipfs/bifrost-gateway |
| 8 | +ENV GO111MODULE on |
| 9 | +ENV GOPROXY https://proxy.golang.org |
| 10 | + |
| 11 | +ENV SUEXEC_VERSION v0.2 |
| 12 | +ENV TINI_VERSION v0.19.0 |
| 13 | +RUN set -eux; \ |
| 14 | + dpkgArch="$(dpkg --print-architecture)"; \ |
| 15 | + case "${dpkgArch##*-}" in \ |
| 16 | + "amd64" | "armhf" | "arm64") tiniArch="tini-static-$dpkgArch" ;;\ |
| 17 | + *) echo >&2 "unsupported architecture: ${dpkgArch}"; exit 1 ;; \ |
| 18 | + esac; \ |
| 19 | + cd /tmp \ |
| 20 | + && git clone https://github.com/ncopa/su-exec.git \ |
| 21 | + && cd su-exec \ |
| 22 | + && git checkout -q $SUEXEC_VERSION \ |
| 23 | + && make su-exec-static \ |
| 24 | + && cd /tmp \ |
| 25 | + && wget -q -O tini https://github.com/krallin/tini/releases/download/$TINI_VERSION/$tiniArch \ |
| 26 | + && chmod +x tini |
| 27 | + |
| 28 | +# Get the TLS CA certificates, they're not provided by busybox. |
| 29 | +RUN apt-get update && apt-get install -y ca-certificates |
| 30 | + |
| 31 | +COPY --chown=1000:users go.* $SRC_PATH/ |
| 32 | +WORKDIR $SRC_PATH |
| 33 | +RUN go mod download |
| 34 | + |
| 35 | +COPY --chown=1000:users . $SRC_PATH |
| 36 | +RUN git config --global --add safe.directory /go/src/github.com/ipfs/bifrost-gateway |
| 37 | +RUN go install |
| 38 | + |
| 39 | + |
| 40 | +#------------------------------------------------------ |
| 41 | +FROM busybox:1-glibc |
| 42 | +MAINTAINER IPFS Stewards < [email protected]> |
| 43 | + |
| 44 | +ENV GOPATH /go |
| 45 | +ENV SRC_PATH /go/src/github.com/ipfs/bifrost-gateway |
| 46 | +ENV BIFROST_GATEWAY_PATH /data/bifrost-gateway |
| 47 | + |
| 48 | +EXPOSE 9094 |
| 49 | +EXPOSE 9095 |
| 50 | +EXPOSE 9096 |
| 51 | + |
| 52 | +COPY --from=builder $GOPATH/bin/bifrost-gateway /usr/local/bin/bifrost-gateway |
| 53 | +COPY --from=builder $SRC_PATH/docker/entrypoint.sh /usr/local/bin/entrypoint.sh |
| 54 | +COPY --from=builder /tmp/su-exec/su-exec-static /sbin/su-exec |
| 55 | +COPY --from=builder /tmp/tini /sbin/tini |
| 56 | +COPY --from=builder /etc/ssl/certs /etc/ssl/certs |
| 57 | + |
| 58 | +RUN mkdir -p $BIFROST_GATEWAY_PATH && \ |
| 59 | + adduser -D -h $BIFROST_GATEWAY_PATH -u 1000 -G users ipfs && \ |
| 60 | + chown ipfs:users $BIFROST_GATEWAY_PATH |
| 61 | + |
| 62 | +VOLUME $BIFROST_GATEWAY_PATH |
| 63 | +ENTRYPOINT ["/sbin/tini", "--", "/usr/local/bin/entrypoint.sh"] |
| 64 | + |
| 65 | +# Defaults for bifrost-gateway go here |
| 66 | +CMD ["--todo", "${TODO}"] |
0 commit comments