✦ For everyone, free.

Practical knowledge for real and everyday life

Home

18.1.2 Desktop Dev Features

A focused guide to Desktop Dev Features, connecting core concepts with practical Docker and container operations.

Desktop dev features covers the set of capabilities Docker Desktop bundles specifically to accelerate development workflows beyond basic container lifecycle management, scaffolding new projects, integrated vulnerability scanning, and Compose-aware file watching, each addressing a specific point in the development loop rather than ongoing container operations generally.

Scaffolding a new project with docker init

The docker init command generates a starting Dockerfile, .dockerignore, and Compose file tailored to a detected project type, providing a working baseline rather than starting from a completely blank file:

docker init
? What application platform does your project use? Node.js
? What version of Node.js do you want to use? 20

This interactive scaffolding tool inspects the current project directory and asks a small number of targeted questions, producing a reasonable, working starting point that still benefits from review and adjustment for the project's actual, specific needs, but considerably reduces the effort of starting a new Dockerfile entirely from scratch.

Integrated vulnerability scanning through Docker Scout

Docker Desktop integrates Docker Scout directly into the Dashboard's image view, surfacing known vulnerabilities for a locally built or pulled image without needing to separately install and run a standalone scanning tool:

docker scout cves my-api:1.4.2
Dashboard > Images > my-api:1.4.2 > Scout Analysis

Seeing this information directly within the same interface already being used to manage images removes a context switch to a separate tool, which is convenient specifically for catching an obvious, high-severity issue early during local development before an image is ever pushed anywhere.

Compose file watch integration

Docker Desktop and recent Compose versions support a watch mode that automatically syncs specific file changes into a running container, or triggers a rebuild, without manually re-running compose up after every edit:

services:
  api:
    build: .
    develop:
      watch:
        - action: sync
          path: ./src
          target: /app/src
docker compose watch

This reduces the manual rebuild-and-restart cycle that would otherwise interrupt the development feedback loop on every code change, syncing just the changed files directly into the running container rather than requiring a full image rebuild for every minor edit.

Extensions tailored to development workflows

Beyond general-purpose extensions, several available through Docker Desktop's marketplace are specifically oriented toward development tasks, database browsing tools, API testing clients, resource visualizers tailored to debugging a running development stack, integrating these capabilities directly into the Dashboard rather than requiring entirely separate, standalone applications:

docker extension install some-vendor/database-browser

Evaluating whether a specific development-oriented extension genuinely replaces a separate tool already in use, rather than simply adding a redundant, parallel option, keeps the development environment focused rather than cluttered with overlapping capabilities.

Volume backup and export from the GUI

Docker Desktop's Dashboard provides a direct way to export a volume's contents to a local archive, or import a previously exported archive into a new volume, without needing to construct the equivalent throwaway-container command manually:

docker run --rm -v pgdata:/data -v "$(pwd)":/backup alpine tar czf /backup/pgdata.tar.gz -C /data .
Dashboard > Volumes > pgdata > Export

This is a convenient shortcut specifically for an occasional, manual backup or restore during local development, though anything needing to happen routinely or as part of an automated process still depends on the equivalent scripted command rather than a manual, GUI-driven export.

Evaluating which dev features genuinely save time

Each of these features addresses a specific, recurring friction point in local development, scaffolding, vulnerability visibility, the rebuild loop, manual volume management, and adopting them deliberately where they genuinely save time, rather than using every available feature simply because it exists, keeps the development workflow efficient without unnecessary additional complexity layered on top of it.

docker compose watch

For a project with a particularly slow rebuild cycle, file watch integration specifically often provides the most immediately noticeable improvement to daily development speed among these features, which is worth prioritizing adoption of before less frequently impactful ones.

Common mistakes

  • Starting every new project's Dockerfile entirely from scratch without considering docker init as a reasonable, time-saving starting point, even though the generated result still needs review and adjustment.
  • Not taking advantage of integrated vulnerability scanning during local development, only discovering a known, high-severity issue later in a separate CI pipeline step.
  • Continuing a manual rebuild-and-restart development cycle without adopting Compose's file watch capability where it would meaningfully reduce that friction.
  • Installing every available development-oriented extension without evaluating whether each one genuinely replaces a separate tool already in active use.
  • Relying on a manual, GUI-driven volume export as a substitute for an actual, automated, scripted backup process for anything beyond a one-off, local development need.

Desktop dev features, scaffolding through docker init, integrated vulnerability scanning, Compose file watch, development-oriented extensions, and GUI-driven volume export, each target a specific, recurring point of friction in the local development loop, and adopting them deliberately based on which actually addresses a genuine, recurring need keeps the development workflow meaningfully faster without accumulating unnecessary tooling complexity.

Content in this section