Skip to content

Add Docker release images and improve Yano distribution launchers#9

Merged
satran004 merged 3 commits into
mainfrom
chore/docker_distr
May 27, 2026
Merged

Add Docker release images and improve Yano distribution launchers#9
satran004 merged 3 commits into
mainfrom
chore/docker_distr

Conversation

@satran004
Copy link
Copy Markdown
Member

@satran004 satran004 commented May 26, 2026

Summary

This PR adds first-class Docker packaging and release support for Yano, including JVM and native images, a Docker Compose distribution zip, multi-arch release publishing, and improved launcher behavior for jar/native/docker distributions.

It also documents how to build and run all supported distribution types locally.

What Changed

Docker images and release workflow

  • Added artifact-first Docker image builds:
    • JVM image from yanoDistZip
    • Native image from yanoNativeDistZip
  • Added Dockerfiles for:
    • docker/jvm/Dockerfile
    • docker/native/Dockerfile
  • Added DockerHub release workflow:
    • Publishes to bloxbean/yano
    • Supports linux/amd64 and linux/arm64
    • Publishes flavor-specific tags:
      • -jvm
      • -native
      • latest-jvm / latest-native only for final x.y.z releases
  • Docker release is gated behind the existing Maven release workflow success.

Docker Compose distribution

  • Added :app:yanoDockerDistZip.
  • Added Docker Compose bundle with:
    • yano.sh
    • yano.bat
    • .env
    • compose overlays for mainnet, preprod, preview, sanchonet, and devnet
    • editable config/application.yml
    • editable config/network/**
    • logs/, plugins/, and network-specific chainstate directories
  • Docker compose now supports:
    • ./yano.sh start
    • ./yano.sh start:mainnet
    • ./yano.sh start:preview
    • ./yano.sh start:sanchonet
    • ./yano.sh start:devnet
    • ./yano.sh start:

Config and chainstate behavior

  • Docker zip mounts config/network from the host so users can edit genesis/protocol parameter files.
  • Docker images keep immutable defaults at /app/default-config/network.
  • Entrypoints seed missing host config files from the bundled defaults.
  • Docker zip uses network-specific chainstate defaults:
    • chainstate-preprod
    • chainstate-mainnet
    • chainstate-preview
    • chainstate-sanchonet
    • chainstate-devnet
  • Users can override Docker chainstate with:

YANO_CHAINSTATE_PATH=/data/yano-mainnet ./yano.sh start:mainnet

Jar/native distribution launcher improvements

  • ./yano.sh now prints help instead of starting automatically.
  • Explicit start commands are supported:
    • ./yano.sh start
    • ./yano.sh start:preprod
    • ./yano.sh start:mainnet
    • ./yano.sh start:preview
    • ./yano.sh start:sanchonet
    • ./yano.sh start:devnet
    • ./yano.sh start:
  • Existing shortcuts like --mainnet and --profile= remain supported.
  • JVM launcher prints and applies JAVA_OPTS.
  • Jar/native launchers print and apply YANO_EXTRA_ARGS.

Native build fixes

  • Oracle GraalVM container native builds now automatically set:
    • --gc=G1
    • container workdir /project
  • This fixes Oracle native-image:25 builds failing with:

NoSuchFileException: /app/yano.jar

Documentation

Added:

  • adr/023-docker-images-and-compose-release.md
  • docs/BUILD_DISTRIBUTIONS.md
  • docker/BUILD_FROM_SOURCE.md
  • app/bin/CUSTOM_PROFILE.md
  • docker/compose/CUSTOM_PROFILE.md

Updated distribution READMEs with launcher, custom profile, memory option, and build instructions.

Behavior Notes

  • Jar/native zip still default to ./chainstate.
  • Docker zip defaults to network-specific chainstate folders to avoid accidental cross-network reuse.
  • Custom profiles require a matching % section in config/application.yml.

@satran004 satran004 changed the title Add Docker release images and compose distribution Add Docker release images and improve Yano distribution launchers May 27, 2026
@satran004 satran004 merged commit 102bff8 into main May 27, 2026
1 check passed
@satran004 satran004 deleted the chore/docker_distr branch May 27, 2026 09:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant