Skip to content

Commit 52088cb

Browse files
committed
fix: add backend container healthcheck
1 parent 9a28d16 commit 52088cb

2 files changed

Lines changed: 30 additions & 0 deletions

File tree

backend/Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ FROM gcr.io/distroless/java21-debian12:nonroot
1010

1111
WORKDIR /app
1212
COPY --from=build /workspace/target/nr-ilcr-backend-*.jar /app/app.jar
13+
COPY --from=build /workspace/target/classes/ca/bc/gov/nrs/ilcr/HealthCheck.class /app/healthcheck/ca/bc/gov/nrs/ilcr/HealthCheck.class
1314

1415
EXPOSE 8080
1516
USER 65532:65532
17+
HEALTHCHECK --interval=30s --timeout=5s --start-period=30s --retries=3 CMD ["java", "-XX:MaxRAM=64m", "-cp", "/app/healthcheck", "ca.bc.gov.nrs.ilcr.HealthCheck"]
1618
ENTRYPOINT ["java", "-XX:MaxRAMPercentage=50", "-jar", "/app/app.jar"]
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package ca.bc.gov.nrs.ilcr;
2+
3+
import java.net.HttpURLConnection;
4+
import java.net.URI;
5+
import java.time.Duration;
6+
7+
public final class HealthCheck {
8+
private static final int HEALTHY = 0;
9+
private static final int UNHEALTHY = 1;
10+
11+
private HealthCheck() {}
12+
13+
public static void main(String[] args) {
14+
try {
15+
int port = Integer.parseInt(System.getenv().getOrDefault("SERVER_PORT", "8080"));
16+
URI uri = URI.create("http://127.0.0.1:" + port + "/api/health/readiness");
17+
HttpURLConnection connection = (HttpURLConnection) uri.toURL().openConnection();
18+
connection.setConnectTimeout((int) Duration.ofSeconds(2).toMillis());
19+
connection.setReadTimeout((int) Duration.ofSeconds(2).toMillis());
20+
connection.setRequestMethod("GET");
21+
22+
int status = connection.getResponseCode();
23+
System.exit(status >= 200 && status < 400 ? HEALTHY : UNHEALTHY);
24+
} catch (RuntimeException | java.io.IOException ex) {
25+
System.exit(UNHEALTHY);
26+
}
27+
}
28+
}

0 commit comments

Comments
 (0)