Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
ab1eeb7
build(docker): align Dockerfiles with tron-docker
3for Aug 27, 2026
d421894
build(docker): reuse config from cloned source
3for Aug 28, 2026
2f87531
fix(docker): refine network configuration handling
3for Aug 28, 2026
cb1db22
fix(docker): make helper builds context-independent
3for Aug 28, 2026
f659d38
fix(docker): validate daemon and target exact resources
3for Aug 28, 2026
cb004bf
fix(docker): publish P2P port over UDP
3for Aug 28, 2026
3c2fed0
fix(docker): handle run arguments safely
3for Aug 28, 2026
3e96bec
refactor(docker): invoke FullNode directly
3for Aug 28, 2026
59b6464
docs(docker): align guide with runtime behavior
3for Aug 28, 2026
5b7b447
docs(docker): refresh build and port guidance
3for Aug 28, 2026
191d6e8
docs(docker): use helper script in quickstart
3for Aug 28, 2026
803e5ff
docs(quickstart): replace legacy Docker quickstart
3for Aug 28, 2026
17afddd
docs(quickstart): expand Mainnet Docker guidance
3for Aug 28, 2026
891e64b
docs(docker): normalize guide formatting
3for Aug 28, 2026
242a98e
fix(docker): make private network mode runnable
3for Aug 29, 2026
08f44e8
fix(docker): bind API ports to localhost by default
3for Aug 29, 2026
16aad9e
docs(docker): clarify data and log persistence
3for Aug 29, 2026
8ce66a3
docs(docker): clarify image source and tag semantics
3for Aug 29, 2026
76edc6f
docs(docker): clarify Windows shell requirements
3for Aug 29, 2026
7cd4fbf
docs: simplify private network quickstart guidance
3for Aug 29, 2026
c1b1775
chore(docker): address shellcheck style warnings
3for Aug 29, 2026
e86eb63
fix(docker): remove interactive flags from detached runs
3for Aug 29, 2026
450b94b
fix(docker): avoid TTY allocation when following logs
3for Aug 29, 2026
05dac05
docs: clarify Docker container lifecycle in quickstart
3for Aug 29, 2026
f467b2c
docs(docker): clarify the helper image reference
3for Aug 29, 2026
aa1cf84
docs(docker): clarify build requirements and option scopes
3for Aug 31, 2026
fa0fa40
docs(docker): clarify JVM tuning limitations
3for Aug 31, 2026
fc257c9
ci(docker): add lightweight static checks
3for Aug 31, 2026
edd9f43
fix(docker): validate helper commands and expand CI coverage
3for Aug 31, 2026
c4ce02d
ci(docker): keep Docker validation static
3for Aug 31, 2026
888d1f0
docs(docker): document private JSON-RPC port mapping
3for Aug 31, 2026
2166a7f
fix(docker): validate run options before image lookup
3for Aug 31, 2026
52fdb1e
fix(docker): send private config errors to stderr
3for Aug 31, 2026
c9fd4e0
fix(docker): keep private P2P unpublished by default
3for Sep 1, 2026
305bb06
fix(docker): reject run when container already exists
3for Sep 2, 2026
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
2 changes: 0 additions & 2 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,3 +1 @@
./*
!docker-entrypoint.sh

56 changes: 56 additions & 0 deletions .github/workflows/docker-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
name: Docker Check

on:
push:
branches: [ 'master', 'release_**' ]
paths:
- 'docker/docker.sh'
- 'docker/Dockerfile'
- 'docker/arm64/Dockerfile'
- '.github/workflows/docker-check.yml'
pull_request:
branches: [ 'master', 'develop', 'release_**' ]
paths:
- 'docker/docker.sh'
- 'docker/Dockerfile'
- 'docker/arm64/Dockerfile'
- '.github/workflows/docker-check.yml'
workflow_dispatch:

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
docker-check:
name: Docker Static Check
runs-on: ubuntu-24.04
timeout-minutes: 5

steps:
- uses: actions/checkout@v5

- name: Check shell syntax
run: bash -n docker/docker.sh

- name: Run ShellCheck
run: shellcheck docker/docker.sh

- name: Check amd64 Dockerfile
run: >
docker buildx build
--check
--platform linux/amd64
--file docker/Dockerfile
docker

- name: Check ARM64 Dockerfile
run: >
docker buildx build
--check
--platform linux/arm64
--file docker/arm64/Dockerfile
docker
93 changes: 59 additions & 34 deletions docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,44 +1,69 @@
FROM tronprotocol/centos7:0.2
FROM ubuntu:24.04
ARG VERSION="dev"
ENV NO_PROXY_CACHE="-o Acquire::BrokenProxy=true -o Acquire::http::No-Cache=true -o Acquire::http::Pipeline-Depth=0"

ENV TMP_DIR="/tron-build"
ENV JDK_TAR="jdk-8u202-linux-x64.tar.gz"
ENV JDK_DIR="jdk1.8.0_202"
ENV JDK_MD5="0029351f7a946f6c05b582100c7d45b7"
ENV OPENJDK8_URL="https://api.adoptium.net/v3/binary/latest/8/ga/linux/x64/jdk/hotspot/normal/eclipse"
ENV ADOPTIUM_SIGNING_FINGERPRINT="3B04D753C9050D9A5D343F39843C48A565F8F04B"
ENV JDK_DIR="/usr/local/openjdk-8"
ENV BASE_DIR="/java-tron"


RUN set -o errexit -o nounset \
&& yum -y install git wget \
&& wget -P /usr/local https://github.com/frekele/oracle-java/releases/download/8u202-b08/$JDK_TAR \
&& echo "$JDK_MD5 /usr/local/$JDK_TAR" | md5sum -c \
&& tar -zxf /usr/local/$JDK_TAR -C /usr/local\
&& rm /usr/local/$JDK_TAR \
&& export JAVA_HOME=/usr/local/$JDK_DIR \
&& export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar \
&& export PATH=$PATH:$JAVA_HOME/bin \
&& echo "git clone" \
&& mkdir -p $TMP_DIR \
&& cd $TMP_DIR \
&& git clone https://github.com/tronprotocol/java-tron.git \
&& cd java-tron \
&& git checkout master \
&& ./gradlew build -x test \
&& cd build/distributions \
&& 7za x -y java-tron-1.0.0.zip \
&& mv java-tron-1.0.0 $BASE_DIR \
&& rm -rf $TMP_DIR \
&& rm -rf ~/.gradle \
&& mv $JAVA_HOME/jre /usr/local \
&& rm -rf $JAVA_HOME \
&& yum clean all

RUN wget -P $BASE_DIR/config https://raw.githubusercontent.com/tronprotocol/tron-deployment/master/main_net_config.conf
# Update and install dependencies without using any cache
RUN apt-get update $NO_PROXY_CACHE && \
apt-get --quiet --yes install git 7zip curl jq libtcmalloc-minimal4 gnupg dirmngr ca-certificates && \
cd /usr/local \
&& FETCH_URL="$(curl -fsS -w "%{redirect_url}" -o /dev/null "$OPENJDK8_URL")" \
&& JDK_TAR="$(curl -fsSL -w "%{filename_effective}" -O "$FETCH_URL")" \
&& curl -fsSLo "$JDK_TAR.sig" "$FETCH_URL.sig" \
&& GNUPGHOME="$(mktemp -d)" \
&& export GNUPGHOME \
&& gpg --batch --keyserver hkps://keyserver.ubuntu.com --recv-keys "$ADOPTIUM_SIGNING_FINGERPRINT" \
&& gpg --batch --verify "$JDK_TAR.sig" "$JDK_TAR" \
&& rm -rf "$GNUPGHOME" "$JDK_TAR.sig" \
&& mkdir -p "$JDK_DIR" \
&& tar -zxf "$JDK_TAR" -C "$JDK_DIR" --strip-components=1 \
&& rm "$JDK_TAR" \
&& export JAVA_HOME=$JDK_DIR \
&& export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar \
&& export PATH=$PATH:$JAVA_HOME/bin \
&& echo "git clone" \
&& mkdir -p $TMP_DIR \
&& cd $TMP_DIR \
&& git clone https://github.com/tronprotocol/java-tron.git \
&& cd java-tron \
&& git checkout master \
&& ./gradlew clean build -x test -x check --no-daemon \
&& cd build/distributions \
&& 7z x -y java-tron-1.0.0.zip \
&& cp $TMP_DIR/java-tron/framework/src/main/resources/config.conf java-tron-1.0.0/config.conf \
&& mv java-tron-1.0.0 $BASE_DIR \
&& rm -rf $TMP_DIR \
&& rm -rf ~/.gradle \
&& mv $JDK_DIR/jre /usr/local \
&& rm -rf $JDK_DIR \
# Clean apt cache
&& apt-get clean \
&& rm -rf /var/cache/apt/archives/* /var/cache/apt/archives/partial/* \
&& rm -rf /var/lib/apt/lists/*

ENV JAVA_HOME="/usr/local/jre"
ENV PATH=$PATH:$JAVA_HOME/bin

COPY docker-entrypoint.sh $BASE_DIR/bin
ENV LD_PRELOAD="/usr/lib/x86_64-linux-gnu/libtcmalloc_minimal.so.4"
ENV TCMALLOC_RELEASE_RATE=10

WORKDIR $BASE_DIR

ENTRYPOINT ["./bin/docker-entrypoint.sh"]
ENTRYPOINT ["./bin/FullNode"]

# Build-time metadata as defined at http://label-schema.org
ARG BUILD_DATE
ARG VCS_REF
LABEL org.label-schema.build-date=$BUILD_DATE \
org.label-schema.name="Java-TRON" \
org.label-schema.description="TRON protocol" \
org.label-schema.url="https://tron.network/" \
org.label-schema.vcs-ref=$VCS_REF \
org.label-schema.vcs-url="https://github.com/tronprotocol/java-tron.git" \
org.label-schema.vendor="TRON protocol" \
org.label-schema.version=$VERSION \
org.label-schema.schema-version="1.0"
62 changes: 39 additions & 23 deletions docker/arm64/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,33 +1,49 @@
FROM arm64v8/eclipse-temurin:17
FROM ubuntu:24.04
ARG VERSION="dev"
ENV NO_PROXY_CACHE="-o Acquire::BrokenProxy=true -o Acquire::http::No-Cache=true -o Acquire::http::Pipeline-Depth=0"

ENV TMP_DIR="/tron-build"
ENV BASE_DIR="/java-tron"

RUN set -o errexit -o nounset \
&& apt-get update \
&& apt-get -y install git p7zip-full wget libtcmalloc-minimal4 \
&& echo "git clone" \
&& mkdir -p $TMP_DIR \
&& cd $TMP_DIR \
&& git clone https://github.com/tronprotocol/java-tron.git \
&& cd java-tron \
&& git checkout master \
&& ./gradlew clean build -x test -x check --no-daemon \
&& cd build/distributions \
&& 7za x -y java-tron-1.0.0.zip \
&& mv java-tron-1.0.0 $BASE_DIR \
&& rm -rf $TMP_DIR \
&& rm -rf ~/.gradle \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# Update and install dependencies without using any cache
RUN apt-get update $NO_PROXY_CACHE \
&& apt-get --quiet --yes install git 7zip curl jq libtcmalloc-minimal4 openjdk-17-jre-headless=17* \
&& echo "git clone" \
&& mkdir -p $TMP_DIR \
&& cd $TMP_DIR \
&& git clone https://github.com/tronprotocol/java-tron.git \
&& cd java-tron \
&& git checkout master \
&& ./gradlew clean build -x test -x check --no-daemon \
&& cd build/distributions \
&& 7z x -y java-tron-1.0.0.zip \
&& cp $TMP_DIR/java-tron/framework/src/main/resources/config.conf java-tron-1.0.0/config.conf \
&& mv java-tron-1.0.0 $BASE_DIR \
&& rm -rf $TMP_DIR \
&& rm -rf ~/.gradle \
# Clean apt cache
&& apt-get clean \
&& rm -rf /var/cache/apt/archives/* /var/cache/apt/archives/partial/* \
&& rm -rf /var/lib/apt/lists/*

ENV JAVA_HOME="/usr/lib/jvm/java-17-openjdk-arm64"
ENV PATH=$PATH:$JAVA_HOME/bin
ENV LD_PRELOAD="/usr/lib/aarch64-linux-gnu/libtcmalloc_minimal.so.4"
ENV TCMALLOC_RELEASE_RATE=10

RUN wget -P $BASE_DIR/config https://raw.githubusercontent.com/tronprotocol/tron-deployment/master/main_net_config.conf

COPY docker-entrypoint.sh $BASE_DIR/bin

WORKDIR $BASE_DIR

ENTRYPOINT ["./bin/docker-entrypoint.sh"]
ENTRYPOINT ["./bin/FullNode"]

# Build-time metadata as defined at http://label-schema.org
ARG BUILD_DATE
ARG VCS_REF
LABEL org.label-schema.build-date=$BUILD_DATE \
org.label-schema.name="Java-TRON" \
org.label-schema.description="TRON protocol" \
org.label-schema.url="https://tron.network/" \
org.label-schema.vcs-ref=$VCS_REF \
org.label-schema.vcs-url="https://github.com/tronprotocol/java-tron.git" \
org.label-schema.vendor="TRON protocol" \
org.label-schema.version=$VERSION \
org.label-schema.schema-version="1.0"
6 changes: 0 additions & 6 deletions docker/docker-entrypoint.sh

This file was deleted.

Loading
Loading