The countdown to Elevate 2026 is on. Join us in Chicago, London, or Sydney.

Register here

Partners

Docs

LM Academy

LM Community

Platform

Solutions

Pricing

Resources

Company

Platform
  • Infrastructure
  • Cloud & Multi-Cloud
  • Log Management
  • Edwin AI
Solution
  • Automation
  • Tool Consolidation
  • Reduce MTTR
  • Cost Optimization
Industry
  • Healthcare
  • Financial Services
  • Public Sector
  • MSP
Role
  • CIO
  • ITOps
  • CloudOps
  • AIOps
There is no result.
Try it free

14-day access to the full LogicMonitor platform

Explore Platform

One platform, one system for observability, intelligence, and action.

Agentic AIOps

Infrastructure Observability

Cloud Observability

Internet Performance Monitoring

Digital Experience Monitoring

Log Management

3000+ Integrations
3000+ Integrations

Agentic AIOps Overview

Autonomously detect, diagnose, and resolve issues across your environment.

Meet Edwin AI

Turn fragmented cross-domain event noise into explainable, guided action.

AI Agent

Deploy specialized AI agents to handle investigation across the incident lifecycle.

Event Intelligence

Compress raw alert storms into high-fidelity, prioritized insights.

AI Automation

Execute governed, closed-loop remediation across automation playbooks.

ITOps Context Graph

NEW

Unify topology, telemetry, and changes into an AI-ready context layer.

MCP

NEW

Establish traceable, secure governance boundaries for AI tool integrations.

Infrastructure Observability Overview

Full visibility across your entire hybrid estate to eliminate tool sprawl.

Network Monitoring

Accelerate time to innocence with deep network path and device visibility.

Server Monitoring

Track server health, OS metrics, and resource utilization across environments.

Remote Monitoring

Monitor distributed endpoints, branch networks, and remote facility health.

VM Monitoring

Maximize hypervisor performance and streamline compute capacity planning.

SD-WAN Monitoring

Keep multi-site cloud networks connected with real-time edge visibility.

Database Monitoring

Pinpoint database query bottlenecks to keep business applications fast.

Configuration Monitoring

Minimize change failure rates by tracking device configuration drift.

Storage Monitoring

Track SAN/NAS arrays, IOPS bottlenecks, and storage capacity trends.

Cloud Observability Overview

Multi-cloud and hybrid environments unified into a single operational pane.

Container Monitoring

Automated, real-time visibility for Kubernetes and ephemeral microservices.

AWS Monitoring

Track AWS services, scaling, and costs alongside on-premises data.

Google Cloud Monitoring

Monitor native GCP infrastructure, compute, and serverless resources.

Azure Monitoring

Comprehensive visibility into Azure environments, gateways, and workloads.

AI Monitoring

Track LLM infrastructure, GPU utilization, and AI application stack health.

Oracle Cloud Monitoring

Track OCI native compute, enterprise databases, and cloud storage.

SaaS Monitoring

Validate availability and workforce productivity for critical SaaS apps.

Cloud Cost Optimization

Optimize cloud spend, maintain performance, and control budgets.

Internet Performance Monitoring Overview

Understand performance across the full stack wherever users depend on it.

Internet Health

NEW

Use global vantage points to independently validate internet outages.

Real User Monitoring

NEW

Capture actual customer journeys and frontend performance in real time.

Synthetic Monitoring

NEW

Emulate user transactions and SaaS workflows to catch problems early.

Endpoint Monitoring

NEW

Diagnose remote workforce digital experience across devices and networks.

Digital Experience Monitoring

See every dependency, regardless of ownership or location.

Website Monitoring

Protect revenue journeys with proactive synthetic checks and uptime tracking.

CDN Monitoring

NEW

Audit edge performance and latency variance across your CDN providers.

API Monitoring

NEW

Test endpoints and third-party API reliability for critical app integrations.

Application Performance Monitoring

Connect code execution and traces directly to infrastructure health.

DNS Monitoring

NEW

Speed up time-to-innocence by tracking global nameserver resolution times.

DevOps Lifecycle Monitoring

NEW

Protect release velocity by validating dependencies during deployments.

BGP Monitoring

NEW

Trace global routing changes and path leaks to secure internet reachability.

Log Management Overview

Centralize and correlate log data to resolve incidents before they escalate.

Log Analytics & Intelligence

Correlate contextual log data with metrics to speed up root-cause analysis.

WebPageTest Web Performance

Test, compare, and optimize website speed, Core Web Vitals, and performance across real devices and global locations.

Learn more
Explore Solutions

Proactively manage modern hybrid environments with predictive insights, intelligent automation, and full-stack observability.

By Business Outcome

By Role

By Industry

Professional Services

Autonomous IT

Predictive, autonomous IT built

for resilience.

Automation

Eliminate operational toil with safe, policy-governed remediation workflows.

Modernization and Transformation

Accelerate complex technology transitions while protecting core enterprise resilience.

Cloud Migration

Maintain workload performance throughout migration.

Tool Consolidation

Reduce licensing costs and silos by replacing fragmented monitoring tools.

Cost Optimization

Lower your total cost-to-serve by finding cloud waste and underused resources.

Operational Efficiency

Maximize team capacity by reducing alert storms and shift-handoff friction.

Reduce MTTR

Shorten war-rooms by surfacing topology-aware probable cause in mins.

Network Reachability

NEW

Independently audit external BGP, ISP, and SaaS provider connectivity boundaries.

Edge Deployment Optimization

NEW

Monitor SLOs, compare providers, and validate cloud and edge delivery.

Web Performance Optimization

NEW

Maximize digital checkout conversions by tracking global frontend latency metrics.

Application Resilience

NEW

Safeguard business services against transaction failures and costly downtime.

Workforce Productivity

NEW

Troubleshoot remote hardware and network issues to protect productivity.

CIO

Maximize enterprise resilience and align AI investments to measurable business ROI.

AIOps

Compress cross-domain event noise into explainable, automated ops leverage.

DevOps

Speed up releases by protecting engineering roadmaps from toil.

ITOps

Standardize incident response to reduce alert fatigue and after-hours work.

CloudOps

Unify multi-cloud visibility to optimize costs and track hybrid blast radius.

Healthcare

Protect continuity of care and EHR availability across clinical workflows.

Public Sector

Ensure mission continuity and audit readiness for citizen-facing services.

MSP

Protect service margins and scale ops using multi-tenant, AI-assisted triage.

Retail & E-commerce

Safeguard peak retail campaigns, POS uptime, and digital customer journeys.

Technology

Protect customer trust and engineering velocity with SLA-driven visibility.

Hospitality

Deliver frictionless guest experiences and keep booking engines online.

Education

Maintain always-on student portals, learning platforms, and campus networks.

Manufacturing

Prevent production downtime by unifying IT, OT-adjacent, and edge systems.

Financial Services

Secure transaction trust and meet strict resilience compliance requirements.

Why LogicMonitor?

Discover why leading IT teams trust us to unify hybrid observability and eliminate tool sprawl.

Learn more
Explore Resources

Check out our resource library for IT pros, featuring expert guides, strategies, and insights for smarter, AI-driven operations.

Resources

Upcoming Events

Platform Help

Blog

Insights and advice from the experts on all things observability and AI.

Case Studies

See what real users have to say about the LogicMonitor platform.

Webinars

Live and on-demand learning, all in one place.

IT Guides

Learn from expert guides on the topics that matter most to IT teams.

How We Compare

See how our platform stacks up against other solutions.

Viee of a bridge over a river leading to Cologne cathedral rising against the skyline and a blue sky
CONFERENCE

Digital X Cologne

September 8, 2026

Cologne

CONFERENCE

SWORD Day

September 17, 2026

Geneva

View all events

Join us at innovation-focused conferences, tech talks, webinars, and other events.

Support Docs

Access product docs, release notes, and support resources.

LM Community

Join the community to learn from peers, ask questions, and connect with experts.

Customer Education

Learn more about our platform through resources and live trainings.

2026 The Year of Autonomous IT

NEW

Discover the trends, benchmarks, and strategies driving the industry shift to Autonomous IT.

Read the report
About LogicMonitor

Our observability platform proactively delivers the insights and automation CIOs need to accelerate innovation.

Leadership

Meet the leaders building the future of observability and AI.

Our Customers

See the proof of how IT teams win with LogicMonitor.

Careers

Find job openings and learn about our employee benefits.

Newsroom

Stay current with our latest mentions, press releases, and events.

Culture

NEW

Join a collaborative, values-driven culture built on innovation and growth.

Security

Purpose-built security for the hybrid observability and AI era.

Contact & Locations

Connect with our experts to explore AI-powered observability solutions.

Sustainability

Our commitment to the environment and the people in it.

The countdown to Elevate 2026 is on. Join us in Chicago, London, or Sydney.

Register here
Try it free

Platform

Explore Platform

One platform, one system for observability, intelligence, and action.

Agentic AIOps

Infrastructure Observability

Cloud Observability

Internet Performance Monitoring

Digital Experience Monitoring

Log Management

3000+ Integrations

WebPageTest Web Performance

Test, compare, and optimize website speed, Core Web Vitals, and performance across real devices and global locations.

Solutions

Explore Solutions

Proactively manage modern hybrid environments with predictive insights, intelligent automation, and full-stack observability.

By Business Outcome

By Role

By Industry

Professional Services

Why LogicMonitor?

Discover why leading IT teams trust us to unify hybrid observability and eliminate tool sprawl.

Pricing

Resources

Explore Resources

Check out our resource library for IT pros, featuring expert guides, strategies, and insights for smarter, AI-driven operations.

Resources

Upcoming Events

Platform Help

NEW

2026 The Year of Autonomous IT

Discover the trends, benchmarks, and strategies driving the industry shift to Autonomous IT.

Company

About LogicMonitor

Our observability platform proactively delivers the insights and automation CIOs need to accelerate innovation.

Leadership

Meet the leaders building the future of observability and AI.

Careers

Find job openings and learn about our employee benefits.

Culture

NEW

Join a collaborative, values-driven culture built on innovation and growth.

Contact & Locations

Connect with our experts to explore AI-powered observability solutions.

Our Customers

See the proof of how IT teams win with LogicMonitor.

Newsroom

Stay current with our latest mentions, press releases, and events.

Security

Purpose-built security for the hybrid observability and AI era.

Sustainability

Our commitment to the environment and the people in it.

Partners

Docs

LM Academy

LM Community

Agentic AIOps

Agentic AIOps Overview

Autonomously detect, diagnose, and resolve issues across your environment.

Meet Edwin AI

Turn fragmented cross-domain event noise into explainable, guided action.

AI Agent

Deploy specialized AI agents to handle investigation across the incident lifecycle.

Event Intelligence

Compress raw alert storms into high-fidelity, prioritized insights.

AI Automation

Execute governed, closed-loop remediation across automation playbooks.

ITOps Context Graph

NEW

Unify topology, telemetry, and changes into an AI-ready context layer.

MCP

NEW

Establish traceable, secure governance boundaries for AI tool integrations.

Infrastructure Observability

Infrastructure Observability Overview

Full visibility across your entire hybrid estate to eliminate tool sprawl.

Network Monitoring

Accelerate time to innocence with deep network path and device visibility.

Server Monitoring

Track server health, OS metrics, and resource utilization across environments.

Remote Monitoring

Monitor distributed endpoints, branch networks, and remote facility health.

VM Monitoring

Maximize hypervisor performance and streamline compute capacity planning.

SD-WAN Monitoring

Keep multi-site cloud networks connected with real-time edge visibility.

Database Monitoring

Pinpoint database query bottlenecks to keep business applications fast.

Configuration Monitoring

Minimize change failure rates by tracking device configuration drift.

Storage Monitoring

Track SAN/NAS arrays, IOPS bottlenecks, and storage capacity trends.

Cloud Observability

Cloud Observability Overview

Multi-cloud and hybrid environments unified into a single operational pane.

Container Monitoring

Automated, real-time visibility for Kubernetes and ephemeral microservices.

AWS Monitoring

Track AWS services, scaling, and costs alongside on-premises data.

Google Cloud Monitoring

Monitor native GCP infrastructure, compute, and serverless resources.

Azure Monitoring

Comprehensive visibility into Azure environments, gateways, and workloads.

AI Monitoring

Track LLM infrastructure, GPU utilization, and AI application stack health.

Oracle Cloud Monitoring

Track OCI native compute, enterprise databases, and cloud storage.

SaaS Monitoring

Validate availability and workforce productivity for critical SaaS apps.

Cloud Cost Optimization

Optimize cloud spend, maintain performance, and control budgets.

Internet Performance Monitoring

Internet Performance Monitoring Overview

Understand performance across the full stack wherever users depend on it.

Internet Health

NEW

Use global vantage points for independent validation of internet outages.

Real User Monitoring

NEW

Capture actual customer journeys and frontend performance in real time.

Synthetic Monitoring

NEW

Emulate user transactions and SaaS workflows to catch problems early.

Endpoint Monitoring

NEW

Diagnose remote workforce digital experience across devices and networks.

Digital Experience Monitoring

Digital Experience Monitoring

See every dependency, regardless of ownership or location.

Website Monitoring

Protect revenue journeys with proactive synthetic checks and uptime tracking.

CDN Monitoring

NEW

Audit edge performance and latency variance across your CDN providers.

API Monitoring

NEW

Test endpoints and third-party API reliability for critical app integrations.

Application Performance Monitoring

Connect code execution and traces directly to infrastructure health.

DNS Monitoring

NEW

Speed up time to innocence by tracking global nameserver resolution times.

DevOps Lifecycle Monitoring

NEW

Protect release velocity by validating dependencies during deployments.

BGP Monitoring

NEW

Trace global routing changes and path leaks to secure internet reachability.

Logs

Log Management Overview

Centralize and correlate log data to resolve incidents before they escalate.

Log Analytics & Intelligence

Correlate contextual log data with metrics to speed up root-cause analysis.

By Business Outcome

Autonomous IT

Predictive, autonomous IT built for resilience.

Automation

Eliminate repetitive operational toil with safe, policy-governed remediation workflows.

Modernization and Transformation

Accelerate complex technology transitions while protecting core enterprise resilience.

Cloud Migration

Maintain workload performance throughout migration.

Tool Consolidation

Reduce licensing costs and data silos by replacing fragmented monitoring tools.

Cost Optimization

Lower your total cost-to-serve by finding cloud waste and underused resources.

Operational Efficiency

Maximize team capacity by reducing alert storms and shift-handoff friction.

Reduce MTTR

Shorten war-room by surfacing topology-aware probable cause in mins.

Network Reachability

NEW

Independently audit external BGP, ISP, and SaaS provider connectivity boundaries.

Edge Deployment Optimization

NEW

Monitor SLOs, compare providers, and validate cloud and edge delivery.

Web Performance Optimization

NEW

Maximize digital checkout conversions by tracking global frontend latency metrics.

Application Resilience

NEW

Safeguard business services against transaction failures and costly downtime.

Workforce Productivity

NEW

Troubleshoot remote hardware and network issues to protect productivity.

By Role

CIO

Maximize enterprise resilience and align AI investments to measurable business ROI.

AIOps

Compress cross-domain event noise into explainable, automated ops leverage.

DevOps

Speed up releases by protecting engineering roadmaps from toil.

ITOps

Standardize incident response to reduce alert fatigue and after-hours work.

CloudOps

Unify multi-cloud visibility to optimize costs and track hybrid blast radius.

By Industry

Healthcare

Protect continuity of care and EHR availability across clinical workflows.

Public Sector

Ensure mission continuity and audit readiness for citizen-facing services.

MSP

Protect service margins and scale ops using multi-tenant, AI-assisted triage.

Retail & E-commerce

Safeguard peak retail campaigns, POS uptime, and digital customer journeys.

Technology

Protect customer trust and engineering velocity with SLA-driven visibility.

Hospitality

Deliver frictionless guest experiences and keep booking engines online.

Education

Maintain always-on student portals, learning platforms, and campus networks.

Manufacturing

Prevent production downtime by unifying IT, OT-adjacent, and edge systems.

Financial Services

Secure transaction trust and meet strict operational resilience compliance requirements.

Resources

Blog

Insights and advice from the experts on all things observability and AI.

Case Studies

See what real users have to say about the LogicMonitor platform.

Webinars

Live and on-demand learning, all in one place.

IT Guides

Learn from expert guides on the topics that matter most to IT teams.

How We Compare

See how our platform stacks up against other solutions.

Upcoming Events

Viee of a bridge over a river leading to Cologne cathedral rising against the skyline and a blue sky

CONFERENCE

Digital X Cologne

September 8, 2026

CONFERENCE

SWORD Day

September 17, 2026

View all events

Join us at innovation-focused conferences, tech talks, webinars, and other events.

Platform Help

Support Docs

Access product docs, release notes, and support resources.

LM Community

Join the community to learn from peers, ask questions, and connect with experts.

Customer Education

Learn more about our platform through resources and live trainings.

LOGICMONITOR BLOG

How to Use Quarkus Live Coding (Live Reload) in Docker

Build a faster Quarkus development loop with Docker: enable remote Live Coding, reload code changes instantly, and troubleshoot containers before production.

14–20 minutes
September 2, 2026

How to Use Quarkus Live Coding in Docker

IN THIS ARTICLE

NEWSLETTER

Subscribe to our newsletter

Get the latest blogs, whitepapers, eGuides, and more straight into your inbox.

SHARE

The quick download

Quarkus Live Coding, also called Live Reload, works with Docker when the container runs in Quarkus development mode and is configured for remote development.

  • Generated Quarkus container configurations typically use production-style execution, so enable dev mode explicitly with QUARKUS_LAUNCH_DEVMODE=true.

  • The workflow requires three elements: dev mode, a mutable JAR, and a reachable quarkusRemoteDev connection.

  • Keep Live Coding settings in application-dev.properties so a standard production build does not include them.

  • After development, use LogicMonitor to monitor the resulting service across containers, JVM resources, dependencies, and network performance before production traffic exposes an issue.

Quarkus Live Coding lets you edit source code and see changes in the running application after Quarkus automatically recompiles and reloads the affected code, without a manual rebuild or redeployment. 

Locally, this happens automatically in dev mode. Inside a Docker container, it takes a few extra configuration steps because containers default to production mode, which disables Live Coding on purpose.

In this Quarkus Docker guide, we’ll cover how to create a Quarkus app, run it locally with Live Coding, and then get that same Live Coding workflow running inside a Docker container.

Disclaimer: Last verified against Quarkus 3.33 LTS (current as of mid-2026). Quarkus releases new minor versions every 4-6 weeks, so check quarkus.io/releases for the latest LTS before you pin a version in production.

Prerequisites

Install these before starting:

  • JDK 17, 21, or 25, depending on the Quarkus version and project requirements
  • Docker or Podman
  • Gradle or Maven, preferably using the Maven or Gradle wrapper generated with the project.

Note:

Enable Live Coding in Docker

If you already have a Quarkus application and need the abbreviated workflow:

Step 1: Set QUARKUS_LAUNCH_DEVMODE=true as an environment variable on your Docker container.

Step 2: Add quarkus.package.jar.type=mutable-jar, quarkus.live-reload.password=, and quarkus.live-reload.url=https://localhost:8080 to application.properties or application-dev.properties.

Step 3: Build the JAR, build the Docker image, and run the container.

Step 4: Connect with ./gradlew quarkusRemoteDev (Gradle) or ./mvnw quarkus:remote-dev (Maven).

If you put the config in application-dev.properties, add -Dquarkus.profile=dev to both the build command and the remote-dev command. The rest of this guide walks through why each step is necessary and what to do when one of them doesn’t work.  

Version Note: Examples were verified against Quarkus 3.33 LTS and Java 25. Confirm the current Quarkus LTS and generate Dockerfile templates before using these commands in a new project.

What Is Live Coding in Quarkus?

Live coding in Quarkus, also called Development Mode or dev mode, continuously monitors your source files and automatically rebuilds and reloads the application when you make changes by eliminating the need for manual restarts.

This only works in dev mode, not in a production build. It speeds up the loop of writing code and testing it, not to be part of how you deploy your app; you still use a normal, unchanging build everywhere else.

The workflow is: when your app runs in dev mode, it checks for source changes each time a request comes in. If something changed, Quarkus compiles just that part of the code and updates the running app before answering the request. 

That first request after a change takes a bit longer because of the compile step; after that, things run at normal speed again until you make another edit.

This works the same way whether the app is running directly on your machine or inside a Docker container. The one difference with a container is that you have to tell it to run in dev mode and give your local Quarkus CLI a way to reach it.

How to Create My First Quarkus App

The most direct way to create a Quarkus project is the Quarkus CLI. Installation and Java or build-tool requirements depend on the selected setup, so verify them against the current Quarkus documentation. 

Alternatively, code.quarkus.io generates the same project structure through a browser-based form.

With the CLI installed, create a new Gradle-based project:

quarkus create app --gradle org.acme:docker-live-coding

For Maven, drop the --gradle flag; Maven is the default build tool. Run quarkus create app --help to see the project-creation options, or quarkus -h to see the CLI’s other general help commands.

This creates a docker-live-coding directory with a working REST endpoint, a unit test for it, and a set of Dockerfiles already wired up for you.

What’s Inside the Generated Project?

The endpoint is present at src/main/java/org/acme/GreetingResource.java:

@Path("/hello")
public class GreetingResource {
    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String hello() {
        return "Hello from Quarkus REST";
    }
}

A matching test is at src/test/java/org/acme/GreetingResourceTest.java:

@QuarkusTest
public class GreetingResourceTest {

    @Test
public void testHelloEndpoint() {
        given()
          .when().get("/hello")
          .then()
            .statusCode(200)
            .body(is("Hello from Quarkus REST"));
    }

}

The CLI also generates Dockerfiles in src/main/docker/:

DockerfilePurpose
Dockerfile.jvmThis Dockerfile is used to build a container that runs the Quarkus application in JVM mode 
Dockerfile.legacy-jarThe pre-Quarkus-1.12 JAR layout. Only relevant if you’re maintaining an older project.
Dockerfile.nativeThis Dockerfile is used to build a container that runs the Quarkus application in native (no JVM) mode. It copies in a native executable, already compiled separately with GraalVM. 
Dockerfile.native-microThe same native build on a smaller, more minimal base image.

How Do I Run My Quarkus App Locally in Dev Mode?

You can run it from the project directory:

CLI

quarkus dev

Gradle

./gradlew quarkusDev

Maven

./mvnw quarkus:dev

Once it starts, you’ll see a log line confirming dev mode and Live Coding are active, and your app is reachable at http://localhost:8080. Open a second terminal and send a request to http://localhost:8080/hello. You should receive: Hello from Quarkus REST.

How Does Live Reload Work in Quarkus Dev Mode?

With the app still running, edit GreetingResource.java:

public String hello() {

    return "Hello from Quarkus REST. How are you?";

}

Save the file, then run the same curl command again. The next request should reflect the new text after Quarkus detects the change, recompiles the affected source, and redeploys the application in dev mode.

Quarkus detected the change on the next incoming request and recompiled only what changed before serving it. Simple edits like this one, which only change a method body, are usually applied through Quarkus’s state-preserving reload, so the app doesn’t lose its in-memory state. 

Structural changes like adding a field or changing a method signature trigger a full application restart instead, which does reset state. 

How Do I Use a Dockerfile for Quarkus Live Coding?

First, build the JAR. 

Using the Quarkus CLI:

quarkus build

Using Gradle:

./gradlew build

Using Maven: 

./mvnw package

If you leave the hello() change in place from the previous step, either revert it or update the test, the build fails if the test doesn’t match the endpoint.

Build the image with Dockerfile.jvm:

docker build -f src/main/docker/Dockerfile.jvm -t quarkus/docker-live-coding .

Run it:

docker run -i --rm -p 8080:8080 quarkus/docker-live-coding

Curl the endpoint again, and you’ll get the original greeting back. The container doesn’t have your local uncommitted changes baked in unless you rebuilt the image with them. Editing the source file while this container is running does not change the application. 

The startup logs explain why: Profile prod activated. A container built from Dockerfile.jvm runs in production mode, and production mode has no Live Coding to activate.

Why Doesn’t Live Coding Work in Docker by Default?

Live Coding is a dev-mode-only feature, and the default Dockerfiles Quarkus generates are built for production mode. 

Getting Live Coding working in a container means telling that container to run in dev mode instead, then giving your local machine a way to connect to it and push source changes. 

Docker isolates the container filesystem from the host, so the container cannot watch local source files in the same way as Quarkus dev.

A typical remote-development workflow requires:

  • Quarkus development mode, enabled with QUARKUS_LAUNCH_DEVMODE=true
  • a mutable JAR and write access to the deployment resources
  • a reachable remote-development endpoint and the required authentication password.

The next three sections cover each one.

How to Configure Docker for quarkusRemoteDev

Follow these steps: 

Step 1: Switch the Container to dev Mode

Add this environment variable to your Dockerfile:

ENV QUARKUS_LAUNCH_DEVMODE=true

Rather than editing Dockerfile.jvm directly, copy it to a new Dockerfile.dev so you keep a clean production reference. Since this Dockerfile copies in an already-built JAR rather than compiling inside the container, use the runtime variant of the base image (openjdk-25-runtime), not the full builder image:

FROM registry.access.redhat.com/ubi9/openjdk-25-runtime:1.24-3.1786536503
ENV LANG='en_US.UTF-8' LANGUAGE='en_US:en'

COPY --chown=185 build/quarkus-app/lib/ /deployments/lib/
COPY --chown=185 build/quarkus-app/*.jar /deployments/
COPY --chown=185 build/quarkus-app/app/ /deployments/app/
COPY --chown=185 build/quarkus-app/quarkus/ /deployments/quarkus/
RUN chmod o+rw -R /deployments

EXPOSE 8080
USER 185
ENV JAVA_OPTS="-Dquarkus.http.host=0.0.0.0 -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
ENV JAVA_APP_JAR="/deployments/quarkus-run.jar"

ENV QUARKUS_LAUNCH_DEVMODE=true

registry.access.redhat.com/ubi9/openjdk-25-runtime is Red Hat’s official UBI9 OpenJDK 25 runtime image. See the Red Hat Ecosystem Catalog listing for the current tag before you pin one; it’s a recent addition (GA in December 2025), so confirm the tag is still current rather than copying it verbatim from this guide.

If the Quarkus CLI generates a slightly different Dockerfile.jvm for your version, that’s expected. Quarkus updates these templates over time. As long as the QUARKUS_LAUNCH_DEVMODE=true line is present, the rest of this walkthrough applies.

The RUN chmod o+rw -R /deployments line is required and easy to miss: without it, the container doesn’t have write permission to update its own deployment files, so the remote-dev connection you’ll set up next can’t actually push your code changes into the running app. 

Step 2: Make the Build Mutable and Reachable

Open application.properties (in src/main/resources) and add:

quarkus.package.type=mutable-jar
quarkus.live-reload.password=changeit
quarkus.live-reload.url=https://localhost:8080

mutable-jar tells Quarkus to package the build so the running application can be updated in place;  a standard fast-jar build can’t be. 

Replace changeit with a real password; even for local-only use, it’s worth doing correctly, because Quarkus also supports remote Live Coding against non-local machines, and a default password there is a real credential exposed to the network.

quarkus.live-reload.url is technically optional. You can pass it as a command-line flag instead,  but setting it here means you don’t have to remember it later.

Step 3: Build and Run the dev-mode Container

Run the following commands:

quarkus build
docker build -f src/main/docker/Dockerfile.dev -t quarkus/docker-live-coding .
docker run -i --rm -p 8080:8080 quarkus/docker-live-coding

Maven equivalent for the first command: ./mvnw package.

Step 4: Connect Your Local Machine to the Container

In a new terminal, from your project directory, run:

./gradlew quarkusRemoteDev

For Maven: 

./mvnw quarkus:remote-dev.

If you didn’t set `quarkus.live-reload.url` in application.properties, pass it explicitly:

./gradlew quarkusRemoteDev -Dquarkus.live-reload.url=https://localhost:8080

A successful connection logs Connected to remote server. From here, edit your source file and curl the endpoint the same way you did locally. The container picks up the change through the remote-dev connection.

How to Scope Live Coding to a Dev Profile Only

The config from the previous section applies to every build, including one you might accidentally ship to production. A mutable JAR with live-reload enabled has no place outside a development environment, so the fix is to move those three properties into a profile-specific file instead of the shared application.properties.

Create application-dev.properties next to the existing application.properties, and move the three Live Coding properties into it. 

Quarkus requires application.properties to still exist in that same location, even if empty, for the profile-specific file to be chosen at all, so don’t delete it once you’ve moved the properties out:

quarkus.package.jar.type=mutable-jar

quarkus.live-reload.password=changeit

quarkus.live-reload.url=https://localhost:8080

Now these settings apply only when you explicitly build with the dev profile:

quarkus build -Dquarkus.profile=dev

./gradlew quarkusRemoteDev -Dquarkus.profile=dev

For Maven: 

./mvnw package -Dquarkus.profile=dev and ./mvnw quarkus:remote-dev -Dquarkus.profile=dev.

Build without the profile flag, and Quarkus ignores the dev-only properties entirely, so a standard production build stays a standard production build.

Is It Safe to Use These Live Coding Configs in Production?

No, don’t run mutable-jar packaging or an active quarkus.live-reload connection in production. Both let a remote client push code changes into a live process, which is exactly what you don’t want outside a development environment. 

Scoping these settings to application-dev.properties, as covered in the previous section, is what prevents that from happening by accident, since a normal Quarkus build with no profile flag never picks them up. 

Treat any environment where Live Coding is accessible, including a shared dev or staging cluster, with the same access controls you’d use for a production secret. 

What Are My Options for Building a Quarkus Container Image?

You don’t have to use docker build and docker run manually. Quarkus has extensions that build the image for you, usually without a hand-written Dockerfile. Which one to use depends on your setup.

Use one Quarkus container-image extension per build. If multiple builder extensions are present, select one explicitly with quarkus.container-image.builder or remove the others. 

Choose Docker, Podman, Jib, Buildpacks, or OpenShift according to the build environment; do not enable multiple providers for the same build unless the selection is explicitly controlled.

Docker

Use this if you’re already comfortable with Dockerfiles. It uses the Docker binary and the Dockerfiles Quarkus already generated under src/main/docker.

Here’s how to use it:

CLI:

quarkus extension add quarkus-container-image-docker

Maven:

./mvnw quarkus:add-extension -Dextensions='quarkus-container-image-docker'

Gradle:

./gradlew addExtension --extensions='quarkus-container-image-docker'

This extension can also build multi-platform images using docker buildx. But docker buildx build only loads the result into a single platform’s Docker image. 

If you set quarkus.docker.buildx.platform to more than one platform (for example, linux/amd64,linux/arm64), the images won’t show up locally. You need to push them with quarkus.container-image.push=true as part of the same build instead, since Docker buildx cannot load a multi-platform result into the local Docker image store; push it to a registry as part of the build.

Podman

Use this if you need something Podman does that Docker doesn’t, such as native multi-platform builds. Otherwise, the Docker extension above already works with Podman, since Podman exposes a Docker-compatible API.

Here’s how to add the following extensions:

CLI:

quarkus extension add quarkus-container-image-podman

Maven:

./mvnw quarkus:add-extension -Dextensions='quarkus-container-image-podman'

Gradle:

./gradlew addExtension --extensions='quarkus-container-image-podman'

Jib

Use this in CI environments without a Docker daemon. Jib builds and pushes the image directly, with no Docker build step.

Here’s how to add the following extensions:

CLI:

quarkus extension add quarkus-container-image-jib

Maven:

./mvnw quarkus:add-extension -Dextensions='quarkus-container-image-jib'

Gradle:

./gradlew addExtension --extensions='quarkus-container-image-jib'

Buildpacks

Use this if you want to skip writing or maintaining a Dockerfile. Buildpacks builds the image from your build output using a standard process instead.

Here’s how to add the following extensions:

CLI:

quarkus extension add quarkus-container-image-buildpack

Maven:

./mvnw quarkus:add-extension -Dextensions='quarkus-container-image-buildpack'

Gradle:

./gradlew addExtension --extensions='quarkus-container-image-buildpack'

Buildpacks still needs a Docker daemon behind the scenes for the actual build. Unlike the other extensions, it doesn’t ship with a default builder image, so you have to set quarkus.buildpack.jvm-builder-image (and quarkus.buildpack.native-builder-image for native builds) yourself.

OpenShift Binary Build

Use this to build directly inside an OpenShift cluster. You upload your build artifacts, and OpenShift merges them into a builder image as part of the build.

Here’s how to add the following extensions:

CLI:

quarkus extension add quarkus-container-image-openshift

Maven:

./mvnw quarkus:add-extension -Dextensions='quarkus-container-image-openshift'

Gradle:

./gradlew addExtension --extensions='quarkus-container-image-openshift'

Building and Pushing, Once an Extension Is Added

To build a container image, set quarkus.container-image.build=true using whichever of these matches your setup:

CLI:

quarkus build

Maven:

./mvnw install -Dquarkus.container-image.build=true

Gradle:

./gradlew build -Dquarkus.container-image.build=true

If you already have a native image built and just want to rebuild the container around it, add -Dquarkus.native.reuse-existing=true and Quarkus skips re-running the native build.

To push the image, set quarkus.container-image.push=true. If you don’t set a registry with quarkus.container-image.registry, Quarkus pushes to docker.io by default.

For Buildpacks, avoid setting quarkus.container-image.build=true permanently in application properties because it can trigger nested builds (builds inside builds). Pass the property on the build command instead. Pass it as a -D flag on the build command instead: -Dquarkus.container-image.build=true directly on the command line.

How to Debug a Quarkus Application Inside a Container

Container debugging is separate from Live Coding. For a JVM build, start the application with the Java debug agent enabled, expose the debug port from the container, and map that port to the host so an IDE or debugger can attach. 

Keep the port restricted to the development environment and avoid exposing it through a shared or public interface.

Native executables require a different workflow. Build the executable with debug symbols and use gdb or an equivalent native debugger; a production-stripped binary does not contain enough information for source-level debugging.

JVM-only tests may also need to be excluded from native or HTTP-only integration runs. Use Quarkus test annotations such as @DisabledOnIntegrationTest where a test depends on JVM-specific behavior.

How to Run a Live Coding Container with Docker Compose

If you’re already running other services locally, like a database or a message broker, Compose is a cleaner way to start the dev-mode container alongside them than a long docker run command. Here’s a minimal docker-compose.yml for the setup above:

services:
  docker-live-coding:
    build:
      context: .
      dockerfile: src/main/docker/Dockerfile.dev
    ports:
      - "8080:8080"
    environment:
      QUARKUS_LAUNCH_DEVMODE: "true"

Build the JAR first with quarkus build (or the Gradle or Maven equivalent), the same as before. Then start the stack with docker compose up –build, and connect with ./gradlew quarkusRemoteDev (or the Maven equivalent) just like you would without Compose. The remote-dev connection still targets localhost:8080, whether Docker or Compose started the container.

How to Build and Run a Native Quarkus Executable in Docker

A native executable is your Quarkus app compiled ahead of time with GraalVM into a standalone binary that skips the JVM entirely, giving you a much smaller image and near-instant startup. 

The downside is a longer build, and you lose Live Coding along the way, so think of this as a separate workflow you reach for once you’re getting closer to a production image, not something you use day-to-day.

You don’t need GraalVM installed on your machine if you build inside a container instead: 

Run quarkus build --native --no-tests -Dquarkus.native.container-build=true (or the Maven or Gradle equivalent), then build and run the generated Dockerfile.native the same way you already built and ran Dockerfile.jvm earlier in this guide. 

Two things worth knowing before you try it:

  • The executable you get is a 64-bit Linux binary, so if you’re on macOS or Windows and you skip the container build. It won’t run in a Linux container. 
  • Since Quarkus 3.19, the container build uses a UBI9-based builder image, so don’t pair the result with a UBI8 base image in your Dockerfile. It won’t run.

Which Base Image Should I Use?

The right base image depends on what you’re deploying:

Base imageFitsTradeoff
Standard UBI (ubi9/openjdk-25)JVM-mode apps, general useBigger image, but it has everything a JVM app needs already installed, so you won’t hit missing-dependency errors
UBI MicroNative executablesSmall image that still has what native builds need; the default for Dockerfile.native-micro
DistrolessNative executables, advanced useNo shell, smaller attack surface. Quarkus calls this experimental and says to test it thoroughly before using it in production
ScratchFully statically linked native executables,  typically built with muslSmallest image possible. Quarkus says not to use it in production without thorough testing, since anything that needs a system library at runtime, like a DNS lookup, can fail unless the binary is fully static

Troubleshooting Live Coding in Docker

If Live Coding isn’t working, check these first:

  • Dev mode won’t activate: Check the container startup logs for Profile dev activated. Live Coding activated. If the logs show Profile prod activated, the QUARKUS_LAUNCH_DEVMODE=true environment variable isn’t reaching the container. Confirm it’s in the Dockerfile you actually built with, not left over in an unused one.
  • The main app reloads, but changes to a library module in the same project: If your project is multi-module (a separate library alongside your main app), quarkusRemoteDev can silently skip reloading the library even though local quarkus dev uses the same change fine. Quarkus logs a warning like Live reload was disabled for the following project artifacts: … The artifacts above appear to be either dependencies of non-reloadable application dependencies or Quarkus extensions. 
  • Code changes aren’t reflected after quarkusRemoteDev connects: Confirm quarkus.package.type=mutable-jar was set at build time. If you built the JAR before adding that property, rebuild it. Also confirm you’re editing the file in the project you actually connected from; quarkusRemoteDev syncs from the local project directory, not from inside the container.

Validate the Service Beyond Development

Once the Docker development workflow is working, validate the service as it will run beyond development. Keep the dev profile, mutable JAR, and remote Live Coding connection out of production builds, then test the resulting image with production-like traffic and dependencies.

Live Coding confirms that source changes can be applied quickly during development. It does not show whether the deployed container will remain healthy, whether dependencies are creating latency, or whether resource pressure will affect users.

LogicMonitor stands out by connecting those production signals in one operational view: container health and restarts, JVM memory and garbage collection, application response time and errors, host or cluster pressure, dependency latency, network-path performance, and deployment changes. 

That cross-layer context helps teams move from an application symptom to the infrastructure or dependency that caused it, across cloud, container, and hybrid environments.

LogicMonitor Supports Production Readiness

Use LogicMonitor to carry visibility from deployment through production operation, with the context needed to identify performance issues before they become user-facing incidents.

Explore LogicMonitor for Quarkus and container monitoring

FAQs

Does This Still Work if I’m on an Older Quarkus Version?

The Live Coding mechanism and the QUARKUS_LAUNCH_DEVMODE / mutable-jar / live-reload configuration have been stable since early Quarkus 2.x. The container-image extensions, Docker Compose approach, and native-build flags in this guide assume a current 3.x release; check the Quarkus migration guides if you’re upgrading from 2.x.

Can I Use Live Coding With Kubernetes or OpenShift, Not Just Local Docker?

Yes, Quarkus supports remote development against containers running in Kubernetes, Minikube, and OpenShift using the same underlying mechanism: dev mode, a mutable build, and a quarkusRemoteDev connection to a reachable URL.

Why Does Live Coding Not Work in Docker by Default?

Generated Dockerfiles are intended for production-style execution and start the application in the prod profile. Enable dev mode explicitly with QUARKUS_LAUNCH_DEVMODE=true, use a mutable JAR, and establish the quarkusRemoteDev connection.

Are Mutable JAR and Live Coding Settings Safe in Production?

No. Keep mutable-jar packaging, Live Coding passwords, and remote reload connections in a development-only profile. A standard production build should not include settings that allow a client to push code into a running process.

What Should I Check When quarkusRemoteDev Cannot Connect?

Confirm that the container is running in dev mode, the remote URL is reachable from the host, the Live Coding password matches, port 8080 is mapped correctly, and the JAR was rebuilt after mutable-jar was enabled. Check the container logs for the active profile and connection status.

Does the Native Workflow Support Live Coding?

No, native builds are a separate packaging path for deployment-oriented testing and production preparation. Use JVM dev mode for Live Coding, then validate the native executable separately.

Do I Need a Current Quarkus Version for These Commands?

The core Live Coding workflow is available across multiple Quarkus generations, but the container-image extensions, Java baseline, Dockerfile templates, and native-build options change. Verify the commands against the Quarkus release and JDK version you plan to use.

© LogicMonitor 2026 | All rights reserved. | All trademarks, trade names, service marks, and logos referenced herein belong to their respective companies.

Related Blogs

Edwin AI and the New Requirements for Operational Resilience in ITOps
Blog AIOps & Automation

Edwin AI and the New Requirements for Operational Resilience in ITOps

Operational resilience depends on more than detecting incidents. Learn how Edwin AI helps ITOps teams connect signals, isolate root cause, predict risk, and respond faster across hybrid environments.
September 4, 2026
Learn more
How to Use Quarkus Live Coding (Live Reload) in Docker
Blog

How to Use Quarkus Live Coding (Live Reload) in Docker

Build a faster Quarkus development loop with Docker: enable remote Live Coding, reload code changes instantly, and troubleshoot containers before production.
September 2, 2026
Learn more
The $1 Million Lesson: Building a Culture of Quality Through SLAs
Blog Internet Performance Monitoring

The $1 Million Lesson: Building a Culture of Quality Through SLAs

A single $1M SLA penalty taught one lasting rule: measure service the way your customers feel it. Here’s how to build SLAs that hold up and protect revenue.
September 1, 2026
Learn more

Product

Platform

Infrastructure

Cloud & Multi-Cloud

Log Management

Edwin AI

Enterprise

Demo

Pricing

WebPageTest Pricing

RUM Monitoring

IPM Monitoring

Synthetic Monitoring

How We Compare

Datadog

Dynatrace

Virtana

Solarwinds

PRTG

ManageEngine

ScienceLogic

SiteScope

BigPanda

About

Careers

Our Partners

Leadership

Newsroom

Security

AI Governance

Sustainability

Legal

Documentation

Docs Hub

Release Notes

Security

Support Center

Resources

Autonomous IT in 2026

Resource Library

LM Academy

Blog

Case Studies

Customer Education

Connect

Contact & Locations

Submit a Ticket

Events

LM Community

Careers


Product

Platform

Infrastructure

Cloud & Multi-Cloud

Log Management

Edwin AI

Enterprise

Demo

Pricing

WebPageTest Pricing

RUM Monitoring

IPM Monitoring

Synthetic Monitoring


How We Compare

Datadog

Dynatrace

Virtana

Zenoss

Solarwinds

PRTG

ManageEngine

ScienceLogic

SiteScope

BigPanda


About

Careers

Our Partners

Leadership

Newsroom

Security

AI Governance

Sustainability

Legal


Documentation

Docs Hub

Release Notes

Security

Support Center


Resources

Autonomous IT in 2026

Resource Library

LM Academy

Blog

Case Studies

Customer Education


Connect

Contact & Locations

Submit a Ticket

Events

LM Community

Careers


Privacy Policy

Terms of Use

Preference Center

Do Not Sell My Information

© 2026 LogicMonitor