Customizing SDK Components
Overview
This guide documents how to run customized components in your own Scroll SDK deployment. We’ll see how to modify a service, build a custom Docker image, and deploy your changes to an existing Scroll SDK deployment.
Prerequisites
- Clone the scroll-sdk repo to your local machine
- Install dependencies:
- Verify installations by running:
docker -vkubectl versionminikube statushelm version
Modifying a Service
- Clone the repository of the service you want to modify
- Make your desired code modifications
- Test your changes locally
Available Services
| Service | Repository |
|---|---|
| bridge-history-api | scroll-tech/scroll/bridge-history-api |
| bridge-history-fetcher | scroll-tech/scroll/bridge-history-fetcher |
| chain-monitor | scroll-tech/chain-monitor |
| contracts | scroll-tech/scroll-contracts |
| coordinator-api | scroll-tech/scroll/coordinator-api |
| coordinator-cron | scroll-tech/scroll/coordinator-cron |
| frontends | scroll-tech/frontends |
| gas-oracle | scroll-tech/scroll/gas-oracle |
| l1-devnet | scroll-tech/scroll-sdk/l1-devnet |
| l2-bootnode | scroll-tech/go-ethereum |
| l2-rpc | scroll-tech/go-ethereum |
| l2-sequencer | scroll-tech/go-ethereum |
| rollup-explorer-backend | scroll-tech/rollup-explorer-backend |
| rollup-node | scroll-tech/scroll/rollup-node |
Building a Custom Docker Image
-
Locate the Dockerfile for your service
-
Build the image:
docker build -f <dockerfile> -t <service-name>:<version> . -
Choose one of two options for making the image available:
Option 1: Publish to Docker Hub
docker logindocker push <your_docker_user_name>/<service_name>:<version>Option 2: Load Directly to Minikube
minikube image load <service_name>:<version>
Updating the Service Configuration
-
Locate the
values.yamlfile for your service indevnet/scroll-sdk/charts/<service-name>/values.yaml -
Update the
imagefield based on your chosen deployment method:For published Docker Hub images:
image:repository: <your_docker_user_name>/<service_name>pullPolicy: Alwaystag: <version>For local Minikube images:
image:repository: <service_name>tag: <version> -
Apply your changes:
make install -
Verify the deployment:
kubectl get pods