From 8d1c46ee6b2b31d07014e39f96b78b7cc1847f61 Mon Sep 17 00:00:00 2001 From: refcell Date: Tue, 25 Jun 2024 17:20:45 -0400 Subject: [PATCH] feat(build): Dockerize trusted-sync (#299) * feat: dockerize trusted-sync fix: tag image chore: move dockerfiles to example dir clean up dockerfile fix: dockerfile * feat: docker publish github action * feat: docker publish github action --- .github/workflows/docker.yaml | 24 ++++++++++++++++++++++++ .gitignore | 3 +++ examples/trusted-sync/Dockerfile | 19 +++++++++++++++++++ examples/trusted-sync/run.sh | 10 ++++++++++ justfile | 17 +++++++++++++++++ 5 files changed, 73 insertions(+) create mode 100644 .github/workflows/docker.yaml create mode 100644 examples/trusted-sync/Dockerfile create mode 100644 examples/trusted-sync/run.sh diff --git a/.github/workflows/docker.yaml b/.github/workflows/docker.yaml new file mode 100644 index 000000000..9b872c493 --- /dev/null +++ b/.github/workflows/docker.yaml @@ -0,0 +1,24 @@ +name: Release and version + +on: + workflow_dispatch: + +jobs: + publish: + name: Publish Trusted Sync + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: docker/setup-buildx-action@v3 + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.PERSONAL_DOCKERHUB_ACCESS_TOKEN_USERNAME }} + password: ${{ secrets.PERSONAL_DOCKERHUB_ACCESS_TOKEN_SECRET }} + - name: Build and Push + uses: docker/build-push-action@v6 + with: + context: . + file: examples/trusted-sync/Dockerfile + push: true + tags: refcell/trusted-sync:latest diff --git a/.gitignore b/.gitignore index 40224b71f..67dad994c 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,6 @@ # Rust target target/ + +# Environment Variables +.env diff --git a/examples/trusted-sync/Dockerfile b/examples/trusted-sync/Dockerfile new file mode 100644 index 000000000..841837d21 --- /dev/null +++ b/examples/trusted-sync/Dockerfile @@ -0,0 +1,19 @@ +FROM rust:latest as build + +RUN rustup target add x86_64-unknown-linux-musl +RUN apt-get update && apt-get install -y musl-tools + +COPY ./crates/ /kona/crates +COPY ./bin/ /kona/bin +COPY ./examples/ /kona/examples +COPY ./Cargo.toml /kona +COPY ./Cargo.lock /kona +COPY ./rustfmt.toml /kona +COPY ./README.md /kona +WORKDIR /kona + +RUN cargo build --release --config net.git-fetch-with-cli=true -p trusted-sync +RUN cp /kona/target/release/trusted-sync /usr/local/bin/trusted-sync +RUN chmod +x ./examples/trusted-sync/run.sh + +CMD ["./examples/trusted-sync/run.sh"] diff --git a/examples/trusted-sync/run.sh b/examples/trusted-sync/run.sh new file mode 100644 index 000000000..e19268898 --- /dev/null +++ b/examples/trusted-sync/run.sh @@ -0,0 +1,10 @@ +#!/usr/bin/bash + +/usr/local/bin/trusted-sync \ + --l1-rpc-url $L1_RPC_URL \ + --l2-rpc-url $L2_RPC_URL \ + --beacon-url $BEACON_URL \ + --start-l2-block $START_L2_BLOCK \ + --metrics-server-addr $METRICS_SERVER_ADDR \ + --metrics-server-port $METRICS_SERVER_PORT \ + -vvv diff --git a/justfile b/justfile index d1ddb5d6b..f2519169b 100644 --- a/justfile +++ b/justfile @@ -5,6 +5,8 @@ alias l := lint alias ln := lint-native alias fmt := fmt-native-fix alias b := build +alias d := docker-build-ts +alias r := docker-run-ts # default recipe to display help information default: @@ -86,3 +88,18 @@ build-asterisc *args='': -v `pwd`/:/workdir \ -w="/workdir" \ ghcr.io/ethereum-optimism/kona/asterisc-builder:main cargo build --workspace --all -Zbuild-std $@ --exclude kona-host --exclude trusted-sync + +# Build the `trusted-sync` docker image +docker-build-ts *args='': + docker build -t trusted-sync -f examples/trusted-sync/Dockerfile . $@ + +# Run the `trusted-sync` docker container +docker-run-ts: + docker run -it \ + -e L1_RPC_URL=$L1_RPC_URL \ + -e L2_RPC_URL=$L2_RPC_URL \ + -e BEACON_URL=$BEACON_URL \ + -e START_L2_BLOCK=$START_L2_BLOCK \ + -e METRICS_SERVER_ADDR=$METRICS_SERVER_ADDR \ + -e METRICS_SERVER_PORT=$METRICS_SERVER_PORT \ + trusted-sync