Contains the environment and required dependencies for running the FHIR IG Publisher inside a Docker container. Included dependencies in the container:
- Java 11 (OpenJDK)
- Ruby
- Jekyll
- Node.js
- Npm
- FSH Sushi
The image contains all dependencies required to run the FHIR IG Publisher. Once the container has been built and started, it will continue to run until it is stopped. This means that the publisher script can be run again and again against an IG as changes are made without the container needing to be restarted.
The ExampleIG
Implementation Guide and its location under sushi/ExampleIG
is provided as an example and not meant to represent an official Implementation Guide. It was created by issuing sushi --init
in the main directory. Modify the following instructions as necessary to match the location of your Implementation Guide. Create and modify your IG as needed.
After cloning the repository, the publisher.jar
will need to be loaded into the sushi/ExampleIG/input-cache
folder. This can be done by executing either the sushi/ExampleIG/_updatePublisher.bat
script, the sushi/ExampleIG/_updatePublisher.sh
script, or by downloading the publisher.jar
from https://github.com/HL7/fhir-ig-publisher/releases and copying it into the sushi/ExampleIG/input-cache
folder.
To build the container after cloning the repo to a local directory of your choice, cd into the main directory, and issue docker compose up -d
This will start the container which will not stop until a docker compose down
command is issued.
After the container has been started, the IG can be published by issuing the following command
docker exec -w /data/ExampleIG/ -it fhir_ig_publisher ./_genonce.sh
This is performing the following:
docker exec
- executes the commands that follow against the container-w /data/ExampleIG/
- sets the working directory to/data/ExampleIG/
This should be modified to match the IG directory-it fhir_ig_publisher
- issues the command against the runningfhir_ig_publisher
container./_genonce.sh
- runs the_genonce.sh
script found in the/data/ExampleIG/
folder set by the-w
command, against thefhir_ig_publisher
container set by the-it
command
Note This command is for the example IG in this repo and should be modified as needed. If a different IG is used, then the working directory path /data/ExampleIG/
will need to be modified to match the working directory of the desired IG. In addition a different script other than _genonce.sh
can be run.
There is a known performance issue when running WSL and using Windows Defender as an anti-virus where publishing can take an exorbitant amount of time.
Note This does not happen on other operating systems or Windows systems that use other anti-virus software.
This is an issue specific to Windows Defender and can cause the publisher to take 20+ minutes since Windows Defender does not play well with WSL and Docker. To reduce the time, go to Windows Security -> Virus & Threat Protection -> Virus & Threat Protection settings -> Manage Settings -> Exclusions -> Add or Remove Exclusions. Add the following Exclusions:
- wsl.exe
- wslhost.exe
- vmwp.exe
- VmmemWSL
You may need to restart after making changes but after the publish should take a minimal amount of time.