Files
ethereum-rpc-docker/hyperliquid/visor.Dockerfile
2025-06-19 13:53:09 +07:00

46 lines
1.5 KiB
Docker

FROM ubuntu:24.04
ARG CHAIN_NAME=Testnet
# Define URLs as environment variables
ARG PUB_KEY_URL=https://raw.githubusercontent.com/hyperliquid-dex/node/refs/heads/main/pub_key.asc
ARG HL_VISOR_URL_TESTNET=https://binaries.hyperliquid-testnet.xyz/Testnet/hl-visor
ARG HL_VISOR_URL_MAINNET=https://binaries.hyperliquid.xyz/Mainnet/hl-visor
WORKDIR /root
# Install required tools including tini
RUN apt-get update && \
apt-get install -y curl gnupg gawk tini && \
rm -rf /var/lib/apt/lists/*
RUN curl -o /root/pub_key.asc $PUB_KEY_URL \
&& gpg --import /root/pub_key.asc
# Configure chain to testnet
RUN echo "{\"chain\": \"${CHAIN_NAME}\"}" > /root/visor.json
RUN echo '#!/bin/bash\n\
IPS=$(echo "$ROOT_NODE_IPS" | tr "," "\n" | awk \047{print "{\"Ip\": \""$1"\"}"}\047 | paste -sd,)\n\
cat > /root/override_gossip_config.json << EOF\n\
{"root_node_ips": [$IPS], "try_new_peers": false, "chain": "'${CHAIN_NAME}'"}\n\
EOF\n\
exec /root/hl-visor run-non-validator --replica-cmds-style recent-actions --serve-evm-rpc' > /root/entrypoint.sh && \
chmod +x /root/entrypoint.sh
# Download and verify hl-visor binary
RUN if [ "$CHAIN_NAME" = "Testnet" ]; then \
curl -o /root/hl-visor $HL_VISOR_URL_TESTNET; \
else \
curl -o /root/hl-visor $HL_VISOR_URL_MAINNET; \
fi \
&& chmod +x /root/hl-visor \
&& mkdir -p /root/hl/data
VOLUME /root/hl/data
# Expose gossip ports
EXPOSE 4000-4010
# Run a non-validating node with tini as init
ENTRYPOINT ["tini", "--", "/root/entrypoint.sh"]