46 lines
1.5 KiB
Docker
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"] |