FROM --platform=linux/amd64 debian:12-slim ARG VERSION_ARG=1.24.0-pro ARG SHA_ARG=01237f7151d2c46c307f21de183eb863ce47a4b5244507487ec663640b077d7d ARG FILE_ARG=goreleaser-pro_Linux_x86_64.tar.gz ARG DOWNLOAD_ARG=https://github.com/goreleaser/goreleaser-pro/releases/download/v${VERSION_ARG}/${FILE_ARG} # from https://github.com/iotaledger/goreleaser-cgo-cross-compiler ENV GORELEASER_VERSION=$VERSION_ARG ENV GORELEASER_SHA=$SHA_ARG ENV GORELEASER_DOWNLOAD_FILE=$FILE_ARG ENV GORELEASER_DOWNLOAD_URL=$DOWNLOAD_ARG # Golang ENV GOLANG_VERSION=1.26.3 ENV GOLANG_SHA=2b2cfc7148493da5e73981bffbf3353af381d5f93e789c82c79aff64962eb556 ENV GOLANG_DOWNLOAD_FILE=go${GOLANG_VERSION}.linux-amd64.tar.gz ENV GOLANG_DOWNLOAD_URL=https://dl.google.com/go/${GOLANG_DOWNLOAD_FILE} ENV SNAP_VERSION=v4.30.6 ENV SNAP_BINARY=yq_linux_amd64 # Docker ENV DOCKER_VERSION=24.0.5 ENV DOCKER_SHA=0a5f3157ce25532c5c1261a97acf3b25065cfe25940ef491fa01d5bea18ddc86 ENV DOCKER_DOWNLOAD_FILE=docker-${DOCKER_VERSION}.tgz ENV DOCKER_DOWNLOAD_URL=https://download.docker.com/linux/static/stable/x86_64/${DOCKER_DOWNLOAD_FILE} # Install cross compiling tools RUN apt-get update && apt-get install -y build-essential wget git cmake \ libc6-dev-armel-cross libc6-dev-armel-cross binutils-arm-linux-gnueabi libncurses5-dev \ gcc-mingw-w64 g++-mingw-w64 \ # install snappy deps gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libbz2-dev libgflags-dev libsnappy-dev libzstd-dev zlib1g-dev \ # node 20 deps curl ca-certificates gnupg zip jq \ # utils make tar wget && \ apt-get -y autoremove # Download yq # TODO: sha256sum RUN wget https://github.com/mikefarah/yq/releases/download/${SNAP_VERSION}/${SNAP_BINARY} -O /usr/bin/yq \ && chmod +x /usr/bin/yq # Download Docker RUN wget ${DOCKER_DOWNLOAD_URL}; \ echo "${DOCKER_SHA} ${DOCKER_DOWNLOAD_FILE}" | sha256sum -c - || exit 1; \ tar --extract --file ${DOCKER_DOWNLOAD_FILE} --strip-components 1 --directory /usr/local/bin/; \ rm ${DOCKER_DOWNLOAD_FILE} # Download GoReleaser RUN wget ${GORELEASER_DOWNLOAD_URL}; \ echo "${GORELEASER_SHA} ${GORELEASER_DOWNLOAD_FILE}" | sha256sum -c - || exit 1; \ tar -xzf ${GORELEASER_DOWNLOAD_FILE} -C /usr/bin/ goreleaser; \ rm ${GORELEASER_DOWNLOAD_FILE}; # Download Golang RUN wget ${GOLANG_DOWNLOAD_URL}; \ echo "${GOLANG_SHA} ${GOLANG_DOWNLOAD_FILE}" | sha256sum -c - || exit 1; \ tar -xzf ${GOLANG_DOWNLOAD_FILE} -C /usr/local; \ rm ${GOLANG_DOWNLOAD_FILE}; # Add Golang to PATH ENV PATH=${PATH}:/usr/local/go/bin CMD ["goreleaser", "-v"] # end copied section LABEL org.label-schema.description="GoReleaser sanguine dockerfile" LABEL org.label-schema.name="ghcr.io/synapsecns/sanguine-goreleaser" LABEL org.label-schema.schema-version="1.0.0" LABEL org.label-schema.vcs-url="https://github.com/synapsecns/sanguine" LABEL org.opencontainers.image.source="https://github.com/synapsecns/sanguine" LABEL org.opencontainers.image.description="Goreleaser Docker image" # add any extra dependencies here # see: https://github.com/tendermint/tm-db/blob/8f92601b6539a3611063709f65256150e198cfd9/tools/Dockerfile ENV LD_LIBRARY_PATH=/usr/local/lib ARG ROCKSDB=6.24.2 ENV ROCKSDB_DISABLE_SNAPPY=1 ENV ROCKSDB_DISABLE_GFLAGS=1 ENV ROCKSDB_DISABLE_ZSTD=1 RUN \ wget -q https://github.com/facebook/rocksdb/archive/v${ROCKSDB}.tar.gz \ && tar -zxf v${ROCKSDB}.tar.gz \ && cd rocksdb-${ROCKSDB} \ && DEBUG_LEVEL=0 make static_lib \ && make install \ && ldconfig \ && cd .. \ && rm -rf v${ROCKSDB}.tar.gz rocksdb-${ROCKSDB} ENV PATH=${PATH}:/etc/musl/x86_64-linux-musl-native/bin:/etc/musl/aarch64-linux-musl-cross/bin:/usr/local/go/bin # Install node 20 RUN mkdir -p /etc/apt/keyrings RUN curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg ENV NODE_MAJOR=20 RUN echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list RUN apt-get update && apt-get install -y nodejs sudo # Install syft RUN curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin RUN rm -rf /var/lib/apt/lists/* /var/log/apt/* /tmp/* /var/tmp/* RUN curl -fsSL https://get.namespace.so/cloud/install.sh | NS_ROOT=/usr/local sh && exit 0 ENV NS_ROOT=/usr/local/bin ENV PATH=${PATH}:/usr/local/bin