Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>DockedNew to Visual Studio Code? Get it now.
Docked

Docked

Vera Bravo

|
5 installs
| (0) | Free
PyCharm-style remote interpreter for Docker Compose projects, keeping VS Code 100% local: mirror the container's dependencies for full introspection, plus debugging and tests inside the container. Multi-language (Python today; PHP/Node planned).
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Docked

PyCharm-style remote interpreter for Docker Compose projects, keeping VS Code 100% local (your git, keybindings and other extensions are untouched). Use your container as the interpreter/runtime for introspection, debugging and tests — without dev containers or "Attach to Running Container".

Multi-language by design. One extension that adapts to the project's language via pluggable providers. Python is implemented today; PHP and Node are planned (see FUTURE.md). The language is auto-detected per workspace (override with docked.language), so you install once and it does the right thing in each project — no enabling/disabling per repo.

All features live behind the Docked status bar button.

Connect / Disconnect

  • Connect syncs the mirror and selects the container interpreter for the workspace, remembering whichever interpreter you had before.
  • Disconnect restores that previous interpreter (the mirror stays cached on disk).

The status bar shows the state: $(debug-disconnect) Docked when disconnected, $(server-environment) Docked when connected, $(warning) Docked when connected but the container's packages drifted.

1. Interpreter introspection (mirror)

For Python, replicates PyCharm's "remote sources": copies site-packages from the container into a local venv built with a matching local Python (pyenv or system), then selects it. Pylance gets full God-level introspection against the exact library versions of the image. A pip freeze hash makes re-syncs a no-op when nothing changed.

On window open it compares the container's current packages against the last sync; if they changed it flags the status bar and offers a one-click Resync, so introspection never silently drifts from the running container.

Requires a local Python with the same major.minor as the container (pyenv install 3.13).

For languages whose deps live inside the project (Node node_modules, PHP vendor/, usually bind-mounted), this step is largely unnecessary — the language server already sees them locally.

2. Debug in container

Zero changes to the project: installs the debug backend (debugpy for Python) into the running container on the fly. The debuggee runs debugpy --listen 127.0.0.1:<port> --wait-for-client inside the container and the extension port-forwards a free host port to it over docker compose exec stdio (a kubectl-port-forward equivalent — no compose port mapping needed). VS Code then attaches with a standard connect. remoteRoot is auto-detected from the container's bind mounts. Stopping the session tears down the tunnel and the container process.

Configure commands per project in .vscode/settings.json:

"docked.debugConfigs": {
  "runserver": "manage.py runserver 0.0.0.0:8000 --noreload",
  "worker": "manage.py run_worker"
}

3. Tests in container (native play buttons)

A Test Controller that discovers tests with the runner inside the container (pytest for Python) and runs/debugs them there, with native gutter play buttons (per test, class and file) and Test Explorer integration. Failures are mapped back to local files; assertion Expected:/Actual: blocks are rendered as a native VS Code diff.

Caveat: cancelling a run kills the local docker exec client; the runner may keep running inside the container until it finishes.

See FUTURE.md for planned work (more language providers, C-extension stub generation, packaging).

Settings

Setting Default Purpose
docked.language auto Language provider (auto detects; or force, e.g. python)
docked.composeFile auto Compose file (auto-detects docker/docker-compose.yml etc.)
docked.service app Compose service running the interpreter
docked.projectName auto Compose project name (-p), auto-detected from container labels
docked.remotePython python Python executable in the container (Python provider)
docked.remoteRoot auto Project path in container (auto via bind mounts)
docked.debugConfigs runserver Named debug commands
docked.cwd auto Working dir (relative to remoteRoot) for debug commands and tests. Empty = auto-detect from pytest's rootdir and persist to .vscode/settings.json (e.g. src)
docked.pytestArgs [] Extra pytest args (Python provider)
docked.cacheDir ~/.cache/docked Where mirror environments live

Install (no marketplace)

Plain JavaScript with zero dependencies — clone and symlink the checkout into the VS Code extensions dir:

git clone git@github.com:verabravo/docked.git
ln -sfn "$PWD/docked" \
  ~/.vscode/extensions/verabravo.docked-0.1.1

Reload VS Code afterwards (Cmd+Shift+P → "Reload Window").

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft