Package org.fhirfrog.frog.ant
Class FhirBootstrapTask
java.lang.Object
org.apache.tools.ant.ProjectComponent
org.apache.tools.ant.Task
org.fhirfrog.frog.ant.FhirBootstrapTask
- All Implemented Interfaces:
Cloneable
public class FhirBootstrapTask
extends org.apache.tools.ant.Task
Ant task that performs a one-time HAPI FHIR bootstrap and captures the loaded
server state as a committed HAPI Docker image plus a
pg_dump SQL file.
The HAPI JPA server stores all IG packages in postgres (not in the HAPI
container filesystem). Since postgres:17 declares VOLUME /var/lib/postgresql/data,
docker commit can never capture postgres data — Docker explicitly excludes
declared volumes from commits. The database is therefore captured via pg_dump
and restored via /docker-entrypoint-initdb.d/ on next start.
The bootstrap sequence:
- Checks whether
imageTagexists locally andpgDumpFileexists on disk — exits early if both are present - Runs
docker compose --profile bootstrap up -dto start postgres and HAPI in detached mode - Polls
/actuator/health/readinessvia HTTP until HAPI is ready, up tomaxRetries × retryIntervalMstotal wait time - Stops HAPI cleanly (no in-flight writes during dump)
- Dumps the postgres database to
pgDumpFileviapg_dump - Stops postgres cleanly (WAL flush)
- Commits the HAPI container as
imageTag - Tears down bootstrap containers in a
finallyblock
Example
<fhirbootstrap imageTag="hapi-erequesting:0.2.0"
composeFile=".fhir-frog/docker-compose.yml"
containerName="fhir-frog-hapi-bootstrap"
pgContainerName="fhir-frog-postgres-bootstrap"/>
-
Field Summary
Fields inherited from class org.apache.tools.ant.Task
target, taskName, taskType, wrapperFields inherited from class org.apache.tools.ant.ProjectComponent
description, location, project -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidexecute()voidsetComposeFile(String composeFile) voidsetContainerName(String containerName) voidsetImageTag(String imageTag) voidsetMaxRetries(int maxRetries) voidvoidsetPgDumpFile(String pgDumpFile) voidsetRetryIntervalMs(long ms) Methods inherited from class org.apache.tools.ant.Task
bindToOwner, getOwningTarget, getRuntimeConfigurableWrapper, getTaskName, getTaskType, getWrapper, handleErrorFlush, handleErrorOutput, handleFlush, handleInput, handleOutput, init, isInvalid, log, log, log, log, maybeConfigure, perform, reconfigure, setOwningTarget, setRuntimeConfigurableWrapper, setTaskName, setTaskTypeMethods inherited from class org.apache.tools.ant.ProjectComponent
clone, getDescription, getLocation, getProject, setDescription, setLocation, setProject
-
Constructor Details
-
FhirBootstrapTask
public FhirBootstrapTask()
-
-
Method Details
-
setImageTag
-
setPgDumpFile
-
setComposeFile
-
setContainerName
-
setPgContainerName
-
setMaxRetries
public void setMaxRetries(int maxRetries) -
setRetryIntervalMs
public void setRetryIntervalMs(long ms) -
execute
public void execute() throws org.apache.tools.ant.BuildException- Overrides:
executein classorg.apache.tools.ant.Task- Throws:
org.apache.tools.ant.BuildException
-