I have just pushed the Docker image for NetRexx 3.07 GA. Docker is a container technology that is worth your while, specially when you don’t have a Java VM installed, or needed to switch to Java 9 for other work. This image contains a Java 8 SDK which is needed to compile NetRexx JVM classes; the resulting classes can run under Java 8, 9, 10 or 11. Lower releases can be targeted with the right compiler options. This image is tagged with 3.07GA and also with ‘latest’ so it will be the default NetRexx image for some time to come.
There are two ways to use it:
1) Work with a shell within the image
As producing data within the image generally is not recommended this also involves a bind-mounted directory, but you will work inside of the shell in the docker container and you can use all the tools provided in the image.
A suitable command line would be:
docker run --rm -it -v "$PWD":/nrx -w /nrx rvjansen/netrexx
If you want to keep changes in the container (for example, when you added tools or configuration that are useful and need to go into a new image, based on this image), do not use the --rm switch. The docker documentation explains how to commit this container and tag its new image. The rvjansen/netrexx will be downloaded once from the docker hub, when it is not on the local machine yet. It will know it has been downloaded the next time you start this image. Also, it will detect when the image has been updated.
The -it switcher are needed for an interactive terminal session. the -v switch bind mounts the current directory into a directory /nrx in the image.
In this release of the images, there is support for the THE editor, an XEDIT lookalike by Mark Hessling, that should make editing familiar for VM or ISPF users. The nano editor in this image is configured to do syntax-colouring for Netrexx source.
2) Compile or exec from a shell on your host machine
The term 'host machine' is used here to indicate the fact that the docker image runs a guest OS.
A suitable command line would be: (assuming you want to compile a class called RSAnrx in the local directory)
docker run --rm -v "$PWD":/nrx -w /nrx rvjansen/netrexx nrc RSAnrx
Here, --rm will make sure the container is not kept, the -v tells docker to bind mount the current directory to a directory /nrx within the container, and -w sets this as the working directory. The rvjansen/netrexx will be downloaded once from the docker hub, when it is not on the local machine yet. It will know it has been downloaded the next time you start this image. Of course, in most shells is it possible to alias this command, or start a batchfile, c.q. a shell script containing this.