Docker Compose dev service follow-container-logs logs almost everything to error
Describe the bug
When using the quarkus.compose.devservices.follow-container-logs=true property with docker compose dev services, certain services are almost entirely printed to log-level ERROR in Quarkus, which is especially an issue in test mode because ERROR messages are printed twice due to stderr + log ERROR, so it's making the logs extremely verbose.
Quarkus produces a lot of logs like for example:
2025-11-26 15:08:58,919 ERROR [io.qua.dev.dep.com.ComposeProject] (docker-java-stream-287857620) [kubernetes-1] : time="2025-11-26T14:08:58Z" level=info msg="Datastore connection validated successfully, proceeding with bootstrap data generation"
Where the log is printed within the container as info, but is printed as ERROR by Quarkus
Expected behavior
Quarkus would not print info logs of followed containers into its own ERROR log level
Actual behavior
Quarkus prints info logs into the ERROR log level
How to Reproduce?
- Clone https://gitlab.com/l.s.andringa1/quarkus-compose-reproducer.git
- Run
./gradlew testor./gradlew quarkusDev(test shows the duplicated logs the best) - Observe that everything from the
kubernetesservice is printed on ERROR
Output of uname -a or ver
Ubuntu 25.10
Output of java -version
21.0.9
Quarkus version or git rev
3.29.4
Build tool (ie. output of mvnw --version or gradlew --version)
9.1.0
Additional information
No response
/cc @edeandrea (container-image), @geoand (container-image,devservices,kubernetes), @holly-cummins (devservices), @ozangunalp (devservices)
@geoand would it be possible to have a look into this? This makes it very hard to not be overwhelmed by a ton of logs when trying to use the compose dev service.
I tried this, but I think there is something wrong with my Docker setup, because I got the following:
2025-12-05 08:24:56,469 INFO [io.qua.dev.dep.com.ComposeRunner] (process-error-consumer-1-"docker"-36423) Image rancher/k3s:v1.34.2-k3s1 Pulled
2025-12-05 08:24:56,470 INFO [io.qua.dev.dep.com.ComposeRunner] (process-error-consumer-1-"docker"-36423) Network quarkus-devservices-quarkus-compose-reproducer_default Creating
> IDL2025-12-05 08:24:56,624 INFO [io.qua.dev.dep.com.ComposeRunner] (process-error-consumer-1-"docker"-36423) Network quarkus-devservices-quarkus-compose-reproducer_default Error Error response from daemon: add inter-network communication rule: (iptables failed: iptables --wait -t filter -A DOCKER-ISOLATION-STAGE-1 -i br-77eac1520bec ! -o br-77eac1520bec -j DOCKER-ISOLATION-STAGE-2: iptables v1.8.10 (nf_tables): Chain 'DOCKER-ISOLATION-STAGE-2' does not exist
2025-12-05 08:24:56,624 INFO [io.qua.dev.dep.com.ComposeRunner] (process-error-consumer-1-"docker"-36423) Try `iptables -h' or 'iptables --help' for more information.
2025-12-05 08:24:56,624 INFO [io.qua.dev.dep.com.ComposeRunner] (process-error-consumer-1-"docker"-36423) (exit status 2))
2025-12-05 08:24:56,624 INFO [io.qua.dev.dep.com.ComposeRunner] (process-error-consumer-1-"docker"-36423) failed to create network quarkus-devservices-quarkus-compose-reproducer_default: Error response from daemon: add inter-network communication rule: (iptables failed: iptables --wait -t filter -A DOCKER-ISOLATION-STAGE-1 -i br-77eac1520bec ! -o br-77eac1520bec -j DOCKER-ISOLATION-STAGE-2: iptables v1.8.10 (nf_tables): Chain 'DOCKER-ISOLATION-STAGE-2' does not exist
2025-12-05 08:24:56,624 INFO [io.qua.dev.dep.com.ComposeRunner] (process-error-consumer-1-"docker"-36423) Try `iptables -h' or 'iptables --help' for more information.
2025-12-05 08:24:56,624 INFO [io.qua.dev.dep.com.ComposeRunner] (process-error-consumer-1-"docker"-36423) (exit status 2))
2025-12-05 08:24:56,626 WARN [io.qua.dev.dep.com.ComposeDevServicesProcessor] (build-39) Could not start successfully Compose dev services for project quarkus-devservices-quarkus-compose-reproducer, reason: Process exited abnormally (pid 36423) with exit code 1 with error output:
> Image rancher/k3s:v1.34.2-k3s1 Pulling
> Image apache/kafka:4.1.0 Pulling
> 9824c27679d3
> 6a46580b9894
> 57f9d6575194
> … (skipped 173 line(s)) …
> Try `iptables -h' or 'iptables --help' for more information.
> (exit status 2))
> failed to create network quarkus-devservices-quarkus-compose-reproducer_default: Error response from daemon: add inter-network communication rule: (iptables failed: iptables --wait -t filter -A DOCKER-ISOLATION-STAGE-1 -i br-77eac1520bec ! -o br-77eac1520
> Try `iptables -h' or 'iptables --help' for more information.
> (exit status 2))
2025-12-05 08:24:56,628 INFO [io.qua.dev.dep.com.ComposeRunner] (build-39) Compose is running command: docker compose down -v -t 1
2025-12-05 08:24:56,654 INFO [io.qua.dev.dep.com.ComposeRunner] (build-39) Compose has finished running
2025-12-05 08:24:56,656 INFO [io.qua.dep.dev.IsolatedDevModeMain] (main) Attempting to start live reload endpoint to recover from previous Quarkus startup failure
2025-12-05 08:24:56,785 ERROR [io.qua.dep.dev.IsolatedDevModeMain] (main) Failed to start quarkus: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkus.devservices.deployment.compose.ComposeDevServicesProcessor#config threw an exception: io.smallrye.common.process.AbnormalExitException: Process exited abnormally (pid 36423) with exit code 1 with error output:
> Image rancher/k3s:v1.34.2-k3s1 Pulling
> Image apache/kafka:4.1.0 Pulling
> 9824c27679d3
> 6a46580b9894
> 57f9d6575194
> … (skipped 173 line(s)) …
> Try `iptables -h' or 'iptables --help' for more information.
> (exit status 2))
> failed to create network quarkus-devservices-quarkus-compose-reproducer_default: Error response from daemon: add inter-network communication rule: (iptables failed: iptables --wait -t filter -A DOCKER-ISOLATION-STAGE-1 -i br-77eac1520bec ! -o br-77eac1520
> Try `iptables -h' or 'iptables --help' for more information.
> (exit status 2))
at io.smallrye.common.process.PipelineRunner.collectProblems(PipelineRunner.java:559)
at io.smallrye.common.process.ProcessRunner.complete(ProcessRunner.java:165)
at io.smallrye.common.process.ProcessRunner.run(ProcessRunner.java:95)
at io.smallrye.common.process.ProcessBuilderImpl.run(ProcessBuilderImpl.java:199)
at io.smallrye.common.process.ProcessBuilderImpl$ViewImpl.run(ProcessBuilderImpl.java:268)
at io.quarkus.devservices.deployment.compose.ComposeRunner.run(ComposeRunner.java:123)
at io.quarkus.devservices.deployment.compose.ComposeProject.runWithCompose(ComposeProject.java:389)
at io.quarkus.devservices.deployment.compose.ComposeProject.startServices(ComposeProject.java:277)
at io.quarkus.devservices.deployment.compose.ComposeProject.start(ComposeProject.java:177)
at io.quarkus.devservices.deployment.compose.ComposeDevServicesProcessor.startCompose(ComposeDevServicesProcessor.java:262)
at io.quarkus.devservices.deployment.compose.ComposeDevServicesProcessor.config(ComposeDevServicesProcessor.java:122)
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733)
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:872)
at io.quarkus.builder.BuildContext.run(BuildContext.java:255)
at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630)
at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589)
at java.base/java.lang.Thread.run(Thread.java:1583)
at org.jboss.threads.JBossThread.run(JBossThread.java:501)
at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:375)
at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:292)
at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:60)
at io.quarkus.deployment.dev.IsolatedDevModeMain.firstStart(IsolatedDevModeMain.java:89)
at io.quarkus.deployment.dev.IsolatedDevModeMain.accept(IsolatedDevModeMain.java:432)
at io.quarkus.deployment.dev.IsolatedDevModeMain.accept(IsolatedDevModeMain.java:55)
at io.quarkus.bootstrap.app.CuratedApplication.runInCl(CuratedApplication.java:143)
at io.quarkus.bootstrap.app.CuratedApplication.runInAugmentClassLoader(CuratedApplication.java:98)
at io.quarkus.deployment.dev.DevModeMain.start(DevModeMain.java:104)
at io.quarkus.deployment.dev.DevModeMain.main(DevModeMain.java:67)
Caused by: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkus.devservices.deployment.compose.ComposeDevServicesProcessor#config threw an exception: io.smallrye.common.process.AbnormalExitException: Process exited abnormally (pid 36423) with exit code 1 with error output:
> Image rancher/k3s:v1.34.2-k3s1 Pulling
> Image apache/kafka:4.1.0 Pulling
> 9824c27679d3
> 6a46580b9894
> 57f9d6575194
> … (skipped 173 line(s)) …
> Try `iptables -h' or 'iptables --help' for more information.
> (exit status 2))
> failed to create network quarkus-devservices-quarkus-compose-reproducer_default: Error response from daemon: add inter-network communication rule: (iptables failed: iptables --wait -t filter -A DOCKER-ISOLATION-STAGE-1 -i br-77eac1520bec ! -o br-77eac1520
> Try `iptables -h' or 'iptables --help' for more information.
> (exit status 2))
at io.smallrye.common.process.PipelineRunner.collectProblems(PipelineRunner.java:559)
at io.smallrye.common.process.ProcessRunner.complete(ProcessRunner.java:165)
at io.smallrye.common.process.ProcessRunner.run(ProcessRunner.java:95)
at io.smallrye.common.process.ProcessBuilderImpl.run(ProcessBuilderImpl.java:199)
at io.smallrye.common.process.ProcessBuilderImpl$ViewImpl.run(ProcessBuilderImpl.java:268)
at io.quarkus.devservices.deployment.compose.ComposeRunner.run(ComposeRunner.java:123)
at io.quarkus.devservices.deployment.compose.ComposeProject.runWithCompose(ComposeProject.java:389)
at io.quarkus.devservices.deployment.compose.ComposeProject.startServices(ComposeProject.java:277)
at io.quarkus.devservices.deployment.compose.ComposeProject.start(ComposeProject.java:177)
at io.quarkus.devservices.deployment.compose.ComposeDevServicesProcessor.startCompose(ComposeDevServicesProcessor.java:262)
at io.quarkus.devservices.deployment.compose.ComposeDevServicesProcessor.config(ComposeDevServicesProcessor.java:122)
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733)
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:872)
at io.quarkus.builder.BuildContext.run(BuildContext.java:255)
at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630)
at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589)
at java.base/java.lang.Thread.run(Thread.java:1583)
at org.jboss.threads.JBossThread.run(JBossThread.java:501)
at io.quarkus.builder.Execution.run(Execution.java:139)
at io.quarkus.builder.BuildExecutionBuilder.execute(BuildExecutionBuilder.java:78)
at io.quarkus.deployment.QuarkusAugmentor.run(QuarkusAugmentor.java:160)
at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:371)
... 9 mor
Yeah I don't know what that is, never seen that before
Right, first time I've seen as well...