Skip to content

Commit b7ff4d7

Browse files
committed
Upgrade Java version to 17 in Dockerfile
Motivation: The latest Central Dogma docker image failes to start up on the `ubuntu-latest` image of GitHub Actions due to the following NPE: ``` Error: -20 09:22:41.518 [ERROR](c.l.c.s.Main) [main] Failed to start the Central Dogma: java.util.concurrent.ExecutionException: java.lang.NullPointerException at java.base/java.util.concurrent.CompletableFuture.reportGet(Unknown Source) at java.base/java.util.concurrent.CompletableFuture.get(Unknown Source) at com.linecorp.armeria.common.util.EventLoopCheckingFuture.get(EventLoopCheckingFuture.java:73) at com.linecorp.centraldogma.server.Main.start(Main.java:138) at com.linecorp.centraldogma.server.Main.main(Main.java:238) Caused by: java.lang.NullPointerException: null at java.base/jdk.internal.platform.cgroupv2.CgroupV2Subsystem.getInstance(Unknown Source) at java.base/jdk.internal.platform.CgroupSubsystemFactory.create(Unknown Source) at java.base/jdk.internal.platform.CgroupMetrics.getInstance(Unknown Source) at java.base/jdk.internal.platform.SystemMetrics.instance(Unknown Source) at java.base/jdk.internal.platform.Metrics.systemMetrics(Unknown Source) at java.base/jdk.internal.platform.Container.metrics(Unknown Source) at jdk.management/com.sun.management.internal.OperatingSystemImpl.<init>(Unknown Source) at jdk.management/com.sun.management.internal.PlatformMBeanProviderImpl.getOperatingSystemMXBean(Unknown Source) at jdk.management/com.sun.management.internal.PlatformMBeanProviderImpl$3.nameToMBeanMap(Unknown Source) at java.management/sun.management.spi.PlatformMBeanProvider$PlatformComponent.getMBeans(Unknown Source) at java.management/java.lang.management.ManagementFactory.getPlatformMXBean(Unknown Source) at java.management/java.lang.management.ManagementFactory.getOperatingSystemMXBean(Unknown Source) at io.micrometer.core.instrument.binder.system.FileDescriptorMetrics.<init>(FileDescriptorMetrics.java:78) at io.micrometer.core.instrument.binder.system.FileDescriptorMetrics.<init>(FileDescriptorMetrics.java:74) at com.linecorp.centraldogma.server.CentralDogma.configureMetrics(CentralDogma.java:1130) at com.linecorp.centraldogma.server.CentralDogma.startServer(CentralDogma.java:772) at com.linecorp.centraldogma.server.CentralDogma.doStart(CentralDogma.java:474) at com.linecorp.centraldogma.server.CentralDogma.access$800(CentralDogma.java:198) at com.linecorp.centraldogma.server.CentralDogma$CentralDogmaStartStop.lambda$doStart$0(CentralDogma.java:1306) at com.linecorp.centraldogma.server.CentralDogma$CentralDogmaStartStop.lambda$execute$2(CentralDogma.java:1345) at java.base/java.lang.Thread.run(Unknown Source) ``` The exception seems fixed by https://bugs.openjdk.org/browse/JDK-8287073 Related: line/centraldogma-python#70 Modifications: - Upgrade the JRE version of the Docker image to 17 - Add a CI test to check if Central Dogma Docker image starts successfully Result: Central Dogma Docker image now starts up propertly in GitHub Actions.
1 parent dd34da0 commit b7ff4d7

4 files changed

Lines changed: 35 additions & 2 deletions

File tree

.github/workflows/actions_build.yml

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,3 +190,26 @@ jobs:
190190
run: |
191191
./gradlew --no-daemon --stacktrace check -PnoLint -PflakyTests=true
192192
shell: bash
193+
194+
docker-build:
195+
if: github.repository == 'line/centraldogma'
196+
runs-on: ubuntu-latest
197+
timeout-minutes: 60
198+
env:
199+
GRADLE_OPTS: -Xmx1280m
200+
steps:
201+
- uses: actions/checkout@v3
202+
203+
- name: Set up QEMU
204+
uses: docker/setup-qemu-action@v3
205+
206+
- name: Set up Docker Buildx
207+
uses: docker/setup-buildx-action@v3
208+
209+
- name: Docker Image Build Test
210+
# Make sure Central Dogma docker container can be started and healthy.
211+
run: |
212+
./gradlew :dist:docker --stacktrace -Pversion=test
213+
docker compose -f dist/docker-compose-test.yml up --wait -d
214+
docker compose -f dist/docker-compose-test.yml down
215+
shell: bash

dist/Dockerfile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#
22
# CentralDogma Dockerfile
33
#
4-
FROM openjdk:11-jre
4+
FROM eclipse-temurin:17-jre
55

66
# Multi-platform build arguments (pre-defined by docker)
77
ARG TARGETARCH
@@ -37,5 +37,9 @@ COPY --chmod=755 \
3737
# Expose ports.
3838
EXPOSE 36462
3939

40+
# Healthcheck – waits for the HTTP API to respond
41+
HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=10 \
42+
CMD curl -f http://127.0.0.1:36462/monitor/l7check || exit 1
43+
4044
# Entrypoint doesn't allow an environment variable.
4145
ENTRYPOINT ["/opt/centraldogma/bin/startup", "-nodetach"]

dist/build.gradle

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,9 +211,12 @@ task docker(group: 'Build',
211211
def buildArgs = [
212212
'buildx', 'build',
213213
'--platform', platforms.join(','),
214-
'--push'
215214
]
216215

216+
if (imageVersion != 'test') {
217+
buildArgs.add('--push')
218+
}
219+
217220
buildArgs.add("--tag")
218221
buildArgs.add("${imageName}:${imageVersion}")
219222
if (!(project.version =~ /-SNAPSHOT$/)) {

dist/docker-compose-test.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
services:
2+
centraldogma:
3+
image: ghcr.io/line/centraldogma:test

0 commit comments

Comments
 (0)