Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 34 additions & 0 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
FROM --platform=linux/amd64 debian:bullseye-slim

RUN apt update && \
apt install --no-install-recommends -q --assume-yes curl=7* libjemalloc-dev=5.* && \
apt clean

RUN ARCH=$(uname -m) && \
if [ "$ARCH" = "aarch64" ]; then \
curl -kL -o jdk-19.tar.gz https://github.com/adoptium/temurin19-binaries/releases/download/jdk-19.0.2%2B7/OpenJDK19U-jre_aarch64_linux_hotspot_19.0.2_7.tar.gz ; \
elif [ "$(uname -s)" = "Darwin" ] && [ "$(uname -m)" = "arm64" ]; then \
curl -kL -o jdk-19.tar.gz https://github.com/adoptium/temurin19-binaries/releases/download/jdk-19.0.2%2B7/OpenJDK19U-jre_aarch64_linux_hotspot_19.0.2_7.tar.gz ; \
elif [ "$ARCH" = "x86_64" ]; then \
curl -kL -o jdk-19.tar.gz https://github.com/adoptium/temurin19-binaries/releases/download/jdk-19.0.2%2B7/OpenJDK19U-jre_x64_linux_hotspot_19.0.2_7.tar.gz ; \
else \
echo "Unsupported platform: $ARCH"; exit 1; \
fi

RUN tar -xzf jdk-19.tar.gz && \
rm jdk-19.tar.gz && \
mv jdk-19.0.2+7-jre /usr/bin/ && \
update-alternatives --install "/usr/bin/java" "java" "/usr/bin/jdk-19.0.2+7-jre/bin/java" 1

ENV JAVA_HOME /usr/bin/jdk-19.0.2+7-jre
RUN export JAVA_HOME
RUN export PATH=$JAVA_HOME/bin:$PATH

WORKDIR /usr/local/bin
COPY . .
ENV HILDR_JAR /usr/local/bin/hildr-node.jar
ENV HILDR_MAIN_CLASS io.optimism.Hildr




4 changes: 2 additions & 2 deletions docker/start-hildr-node.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ set -e

if [ $SYNC_MODE = "full" ]
then
exec hildr-node \
exec java -cp $HILDR_JAR $HILDR_MAIN_CLASS \
--network $NETWORK \
--jwt-secret $JWT_SECRET \
--l1-rpc-url $L1_RPC_URL \
Expand All @@ -13,7 +13,7 @@ then
--sync-mode $SYNC_MODE
elif [ $SYNC_MODE = "checkpoint"]
then
exec hildr-node \
exec java -cp $HILDR_JAR $HILDR_MAIN_CLASS \
--network $NETWORK \
--jwt-secret $JWT_SECRET \
--l1-rpc-url $L1_RPC_URL \
Expand Down
66 changes: 65 additions & 1 deletion hildr-node/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -66,13 +66,21 @@ dependencies {
implementation('net.osslabz.evm:evm-abi-decoder:0.0.6')
implementation 'com.github.gestalt-config:gestalt-core:0.20.4'
implementation 'com.github.gestalt-config:gestalt-toml:0.20.4'
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-toml:2.15.2'

implementation 'com.fasterxml.jackson:jackson-bom:2.15.2'
implementation 'com.fasterxml.jackson.core:jackson-core'
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-toml'
implementation 'org.jctools:jctools-core:4.0.1'

implementation 'io.jsonwebtoken:jjwt-api:0.11.5'
implementation 'io.jsonwebtoken:jjwt-impl:0.11.5'
implementation 'io.jsonwebtoken:jjwt-jackson:0.11.5'

//jsonrpc
implementation('io.vertx:vertx-auth-jwt:4.4.2')
implementation('io.vertx:vertx-core:4.4.2')
implementation('io.vertx:vertx-web:4.4.2')

implementation 'io.micrometer:micrometer-registry-prometheus:1.11.0'
implementation platform('io.micrometer:micrometer-tracing-bom:1.1.1')
implementation 'io.micrometer:micrometer-tracing'
Expand Down Expand Up @@ -239,5 +247,61 @@ jar {
duplicatesStrategy = DuplicatesStrategy.WARN
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
} {
exclude 'META-INF/*.DSA', 'META-INF/*.RSA', 'META-INF/*.SF'
}
}

task buildBinary {
dependsOn jar
def buildBinaryDir = "build/binary"
def out = new ByteArrayOutputStream()
doFirst {
new File(buildBinaryDir).mkdirs()
copy {
from "build/libs/${project.name}-${project.version}.jar"
into buildBinaryDir
rename "${project.name}-${project.version}.jar", "${project.name}.jar"
}
}
doLast {
exec {
workingDir buildBinaryDir
executable "sh"
args "-c", "native-image -jar ${project.name}.jar --initialize-at-build-time=ch.qos.logback,org.slf4j,io.opentelemetry ${project.name}"
standardOutput out
}
}
println(out.toString())
}

task buildDocker {
dependsOn jar
def buildImageDir = "build/docker"
def out = new ByteArrayOutputStream()
doFirst {
new File(buildImageDir).mkdirs()
copy {
from "../docker/start-hildr-node.sh"
into buildImageDir
}
copy {
from "../docker/Dockerfile"
into buildImageDir
}
copy {
from "build/libs/${project.name}-${project.version}.jar"
into buildImageDir
rename "${project.name}-${project.version}.jar", "${project.name}.jar"
}
}
doLast {
exec {
workingDir buildImageDir
executable "sh"
args "-c", "docker build --platform=linux/amd64 -t optimism-java/${project.name}:latest ."
standardOutput out
}
}
println(out.toString())
}