GraalVM

How to install

> sdk list java; 
> sdk install java 20.2.0.r11-grl;
> sdk use java 20.2.0.r11-grl

> git clone git@github.com:kiview/testcontainers-prod-src-example.git
> cd testcontainers-prod-src-example
> ./gradlew shadowJar
> ls build/libs/testcontainers-prod-src-example-1.0-SNAPSHOT-all.jar

Then create a index.js file for node application:

const readline = require('readline');
var GenericContainer = Java.type('org.testcontainers.containers.GenericContainer');
var container = new GenericContainer("nginx");
container.setExposedPorts([80]);
container.start();
console.log(container.getContainerIpAddress() + ':' + container.getMappedPort(80));
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});
rl.question('Type something to quit? ', (answer) => {
  console.log(`Thank you! Bye!`);
  rl.close();
});

Assuming the folder structure is following:

  • testcontainers-prod-src-example

    • build/libs/testcontainers-prod-src-example-1.0-SNAPSHOT-all.jar

  • graalvm_example

    • index.js

How to start node with java lib as a dependency:

> $JAVA_HOME/bin/node --polyglot --jvm \
--vm.cp=../testcontainers-prod-src-example/build/libs/testcontainers-prod-src-example-1.0-SNAPSHOT-all.jar \
index.js

in this case echo $JAVA_HOME returns graalvm java.

Last updated