diff --git a/contrib/intermediate-dockerfiles/Makefile b/contrib/intermediate-dockerfiles/Makefile new file mode 100644 index 0000000000..412257c655 --- /dev/null +++ b/contrib/intermediate-dockerfiles/Makefile @@ -0,0 +1,39 @@ +GO_VERSION := 1.17 +PYTHON_VERSION := 3.10 +RUST_VERSION := nightly-2022-08-23 + +.PHONY: all go-builder rust-builder rust-alpine-builder go-rust-builder py-runner + +go-builder: + docker build -t scrolltech/go-builder:latest -f go-builder ./ + docker image tag scrolltech/go-builder:latest scrolltech/go-builder:$(GO_VERSION) + +rust-builder: + docker build -t scrolltech/rust-builder:latest -f rust-builder ./ + docker image tag scrolltech/rust-builder:latest scrolltech/rust-builder:$(RUST_VERSION) + +rust-alpine-builder: + docker build -t scrolltech/rust-alpine-builder:latest -f rust-alpine-builder ./ + docker image tag scrolltech/rust-alpine-builder:latest scrolltech/rust-alpine-builder:$(RUST_VERSION) + +go-rust-builder: + docker build -t scrolltech/go-rust-builder:latest -f go-rust-builder ./ + docker image tag scrolltech/go-rust-builder:latest scrolltech/go-rust-builder:go-$(GO_VERSION)-rust-$(RUST_VERSION) + +py-runner: + docker build -t scrolltech/py-runner:latest -f py-runner ./ + docker image tag scrolltech/py-runner:latest scrolltech/py-runner:$(PYTHON_VERSION) + +all: go-builder rust-builder rust-alpine-builder go-rust-builder py-runner + +publish: + docker push scrolltech/go-builder:latest + docker push scrolltech/go-builder:$(GO_VERSION) + docker push scrolltech/rust-builder:latest + docker push scrolltech/rust-builder:$(RUST_VERSION) + docker push scrolltech/rust-alpine-builder:latest + docker push scrolltech/rust-alpine-builder:$(RUST_VERSION) + docker push scrolltech/go-rust-builder:latest + docker push scrolltech/go-rust-builder:go-$(GO_VERSION)-rust-$(RUST_VERSION) + docker push scrolltech/py-runner:latest + docker push scrolltech/py-runner:$(PYTHON_VERSION) diff --git a/contrib/intermediate-dockerfiles/go-builder b/contrib/intermediate-dockerfiles/go-builder new file mode 100644 index 0000000000..ad2c6d4f8c --- /dev/null +++ b/contrib/intermediate-dockerfiles/go-builder @@ -0,0 +1,7 @@ +FROM golang:1.17-alpine + +# ENV GOPROXY https://goproxy.cn,direct + +# RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories + +RUN apk add --no-cache gcc musl-dev linux-headers git ca-certificates diff --git a/contrib/intermediate-dockerfiles/go-rust-builder b/contrib/intermediate-dockerfiles/go-rust-builder new file mode 100644 index 0000000000..daaf2242ad --- /dev/null +++ b/contrib/intermediate-dockerfiles/go-rust-builder @@ -0,0 +1,31 @@ +FROM golang:1.17-alpine +ARG CARGO_CHEF_TAG=0.1.41 +ARG DEFAULT_RUST_TOOLCHAIN=nightly-2022-08-23 + +RUN apk add --no-cache gcc musl-dev linux-headers git ca-certificates + +ENV RUSTUP_HOME=/usr/local/rustup \ + CARGO_HOME=/usr/local/cargo \ + PATH=/usr/local/cargo/bin:$PATH + +RUN set -eux; \ + apkArch="$(apk --print-arch)"; \ + case "$apkArch" in \ + x86_64) rustArch='x86_64-unknown-linux-musl' ;; \ + aarch64) rustArch='aarch64-unknown-linux-musl' ;; \ + *) echo >&2 "unsupported architecture: $apkArch"; exit 1 ;; \ + esac; \ + \ + url="https://static.rust-lang.org/rustup/dist/${rustArch}/rustup-init"; \ + wget "$url"; \ + chmod +x rustup-init; + +RUN ./rustup-init -y --no-modify-path --default-toolchain ${DEFAULT_RUST_TOOLCHAIN}; \ + rm rustup-init; \ + chmod -R a+w $RUSTUP_HOME $CARGO_HOME; \ + rustup --version; \ + cargo --version; \ + rustc --version; + +RUN cargo install cargo-chef --locked --version ${CARGO_CHEF_TAG} \ + && rm -rf $CARGO_HOME/registry/ diff --git a/contrib/intermediate-dockerfiles/py-runner b/contrib/intermediate-dockerfiles/py-runner new file mode 100644 index 0000000000..52b06d82ef --- /dev/null +++ b/contrib/intermediate-dockerfiles/py-runner @@ -0,0 +1,3 @@ +FROM python:3.10-alpine3.15 + +RUN apk add --no-cache gcc make musl-dev diff --git a/contrib/intermediate-dockerfiles/rust-alpine-builder b/contrib/intermediate-dockerfiles/rust-alpine-builder new file mode 100644 index 0000000000..d79ed804fd --- /dev/null +++ b/contrib/intermediate-dockerfiles/rust-alpine-builder @@ -0,0 +1,35 @@ +ARG ALPINE_VERSION=3.15 +FROM alpine:${ALPINE_VERSION} +ARG CARGO_CHEF_TAG=0.1.41 +ARG DEFAULT_RUST_TOOLCHAIN=nightly-2022-08-23 + +RUN apk add --no-cache \ + ca-certificates \ + gcc \ + musl-dev + +ENV RUSTUP_HOME=/usr/local/rustup \ + CARGO_HOME=/usr/local/cargo \ + PATH=/usr/local/cargo/bin:$PATH + +RUN set -eux; \ + apkArch="$(apk --print-arch)"; \ + case "$apkArch" in \ + x86_64) rustArch='x86_64-unknown-linux-musl' ;; \ + aarch64) rustArch='aarch64-unknown-linux-musl' ;; \ + *) echo >&2 "unsupported architecture: $apkArch"; exit 1 ;; \ + esac; \ + \ + url="https://static.rust-lang.org/rustup/dist/${rustArch}/rustup-init"; \ + wget "$url"; \ + chmod +x rustup-init; + +RUN ./rustup-init -y --no-modify-path --default-toolchain ${DEFAULT_RUST_TOOLCHAIN}; \ + rm rustup-init; \ + chmod -R a+w $RUSTUP_HOME $CARGO_HOME; \ + rustup --version; \ + cargo --version; \ + rustc --version; + +RUN cargo install cargo-chef --locked --version ${CARGO_CHEF_TAG} \ + && rm -rf $CARGO_HOME/registry/ diff --git a/contrib/intermediate-dockerfiles/rust-builder b/contrib/intermediate-dockerfiles/rust-builder new file mode 100644 index 0000000000..4bf71ea96c --- /dev/null +++ b/contrib/intermediate-dockerfiles/rust-builder @@ -0,0 +1,16 @@ +FROM ubuntu:20.04 + +RUN apt-get update && ln -fs /usr/share/zoneinfo/America/New_York /etc/localtime + +# Install basic packages +RUN apt-get install build-essential curl git pkg-config -y + +# Install dev-packages +RUN apt-get install libclang-dev libssl-dev llvm -y + +# Install Rust +RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y +ENV PATH="/root/.cargo/bin:${PATH}" + +# Add Toolchain +RUN rustup toolchain install nightly-2022-08-23