Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>Punktero DevboxNew to Visual Studio Code? Get it now.
Punktero Devbox

Punktero Devbox

Punktero

|
2 installs
| (0) | Free
Správa devbox instancí: otevírání, kontejnery, sync dat z produkce
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Punktero Devbox

Vývoj běží na sdíleném serveru („devboxu") a každý projekt je tam vlastní složka s vlastním devcontainerem a vlastním blokem portů. Tahle extension je k tomu rozcestník: v postranním panelu vidíš všechny instance, jestli běží, na jakém portu, a jedním klikem je otevřeš, zastavíš, natáhneš do nich data z produkce, založíš novou nebo smažeš starou.

Bez ní to samé znamená pamatovat si jména složek, porty a docker příkazy — a pro sync dat kus dokumentace navíc.

Než začneš

Extension nic neinstaluje ani nekonfiguruje za tebe. Potřebuje:

  • ssh přístup na devbox — nejlépe jako alias v ~/.ssh/config, ať stačí napsat ssh devbox. Alias pak zadáš do nastavení extension.
  • klíč načtený v ssh agentu (ssh-add -l něco vypíše). Bez něj extension poradí, co s tím, místo aby spadla na „Permission denied".
  • právo na docker na devboxu — tedy členství ve skupině docker.
  • na devboxu adresář s projekty, ve výchozím nastavení ~/projects.

Sync dat navíc potřebuje, aby z tvého notebooku byla vidět produkce. Devbox na ni nevidí, proto sync běží odsud a produkci devboxu na dobu běhu protuneluje. Ze stejného důvodu extension vždy běží na notebooku, i když máš okno připojené do devboxu.

Panel

V Activity Baru přibude ikona Devbox:

DEVBOX / INSTANCE                    ⟳  +
─────────────────────────────────────────
▾ muj-projekt          8008 · běží 4/4
    ● main       Up 2 days
    ● db         Up 2 days
    ● ws         Up 2 days
    ● scheduler  Up 2 days
▸ muj-projekt-2        8018 · zastaveno
▸ muj-projekt-3        8028 · nepostaveno
⚠ muj-projekt-4        nenakonfigurováno

Číslo je webový port instance, za ním stav jejích kontejnerů. Rozdíly, které stojí za pozornost:

  • zastaveno — kontejnery existují, jen neběží. Stačí je spustit.
  • nepostaveno — instance je nakonfigurovaná, ale kontejnery ještě nikdy nevznikly. Otevři ji v devcontaineru a VS Code je postaví.
  • nenakonfigurováno — složka nemá .env, tedy ani blok portů. Typicky čerstvě naklonované repo; spusť na ní Nastavit porty.

Instance, ve které stojí zrovna tohle okno, je zvýrazněná a rozbalená — i když jsi v ní přes devcontainer, extension to pozná.

Co s instancí můžeš dělat

Pravý klik na instanci. Nejčastější věci mají i ikonu, která naskočí při najetí myší.

Vybrat jde i víc instancí naráz (Ctrl/Shift + klik jako v Exploreru). Hromadně fungují Otevřít, Otevřít složku a Spustit / Zastavit / Restartovat — každá instance dostane vlastní okno, respektive se akce provede na všech. Ostatní akce zůstávají na jedné instanci: platí pro tu, na kterou jsi klikl pravým tlačítkem, i když je vybráno víc. Sync ani smazání nechceš spustit na pěti instancích jedním potvrzením.

Nad tři okna se extension zeptá — každé okno postaví nebo nastartuje svůj kontejner, což chvíli trvá.

Akce Co se stane
Otevřít Nové okno rovnou uvnitř devcontaineru instance, připravené k práci.
Otevřít složku Nové okno na složce přes Remote-SSH, bez kontejneru. Jediná možnost u nenakonfigurované instance.
Otevřít web Otevře frontend instance v prohlížeči.
Spustit / Zastavit / Restartovat Nastartuje nebo zháší kontejnery instance. Nesahá na docker compose, takže o nic v kontejneru nepřijdeš.
Rebuild kontejneru Postaví kontejner znovu. Potřeba po změně portů. Běží v terminálu, trvá jednotky minut.
Logy služby Sleduje log vybrané služby (main, db, ws, scheduler).
Nastavit porty Najde volný blok portů a vygeneruje konfiguraci devcontaineru.
Sync dat z produkce Přepíše databázi a soubory instance produkčními daty. Destruktivní, viz níže.
Nastavit heslo k produkční DB Uloží heslo do trezoru VS Code.
Smazat instanci Odstraní instanci i s daty. Jen v kontextovém menu.

Otevřít web nejdřív ověří, že port opravdu odpovídá. Ten port totiž nepublikuje devbox — tunel staví okno VS Code připojené do instance a končí na localhostu tvého notebooku. Když instanci nemá otevřenou žádné okno, adresa by v prohlížeči jen spadla; extension proto rovnou nabídne instanci otevřít.

Sync dat z produkce

Natáhne do instance produkční databázi a obsah storage/app.

Nejdřív smaže všechny tabulky v databázi té instance. Cokoli, co sis tam rozdělal, je pryč. Proto se extension zeptá — ukáže, o kterou instanci a kterou databázi jde, a čeká na potvrzení.

Průběh uvidíš v notifikaci po krocích, celý výstup teče do panelu Output → Devbox. První sync běžně trvá desítky minut (samotný storage/app má klidně jednotky GB), další jednotky minut — přenáší se jen změny.

Dvě věci si extension ohlídá sama: srovná práva na souborech na produkci a vybere volný port pro tunel, aby si dva souběžné syncy nepřekážely.

Heslo k produkční databázi si vyžádá jednou a uloží do trezoru VS Code (SecretStorage), ne do nastavení. Sdílí se mezi všemi instancemi téhož projektu, takže se ptá opravdu jen jednou.

Nová instance

Tlačítko + v hlavičce panelu. Vybereš si, z čeho vyjít:

Režim Kdy se hodí
Podle vzoru Chceš další kopii projektu, který na devboxu už máš. Naklonuje jeho repo, převezme konfiguraci a přidělí volný blok portů.
Z URL repozitáře Nový projekt. Zadáš adresu repa a volitelně větev.
Jen prázdná složka Vytvoří složku a nic víc, zbytek si uděláš sám.

Data se nikdy nekopírují — nová instance je prázdná a naplní se až syncem. Díky tomu vznikne za jednotky minut, ne za hodinu.

Po založení se ještě hodí kontejner postavit: otevři instanci a nech ji VS Code sestavit.

Smazání instance

Instance po sobě nechává víc než jen složku, takže se maže všechno najednou: kontejnery, docker volume s databází, síť, images a složka. Než se cokoli stane, uvidíš soupis včetně velikosti a musíš opsat jméno instance.

Instanci otevřenou v tomhle okně nebo se běžícím syncem smazat nejde — extension to odmítne dřív, než se zeptá.

Smazání je nevratné, včetně databáze a všeho, co jsi do instance nasynchronizoval.

Nastavení

Nastavení Výchozí K čemu
punkteroDevbox.host devbox ssh cíl devboxu — alias z ~/.ssh/config nebo user@host
punkteroDevbox.projectsRoot ~/projects kde na devboxu leží instance
punkteroDevbox.refreshInterval 30 jak často (v sekundách) obnovovat stav; 0 vypne
punkteroDevbox.syncProfiles [] přepisy hodnot pro sync, viz níže

Pro sync potřebuje extension vědět, kde je produkce a jak se jmenuje databáze. Nic z toho zadávat nemusíš — čte to z Makefile té instance na devboxu, takže to zůstává v souladu s repem. Přepsat to jde profilem; vyhrává první, jehož match sedí na jméno instance:

"punkteroDevbox.syncProfiles": [
    {
        "match": "muj-projekt*",
        "server": "root@192.0.2.10",
        "serverDir": "/root/docker/muj-projekt",
        "dbName": "muj_projekt",
        "dbUser": "root"
    }
]

Když něco nefunguje

Panel hlásí, že devbox není dostupný. Zkus ssh devbox v terminálu. Když neprojde, sedí problém v ~/.ssh/config nebo v klíči, ne v extension.

ssh devbox visí a nic nevypíše. Zasekl se ControlMaster: spojení je mrtvé, ale ssh o tom neví. Ověříš to tím, že mux obejdeš — ssh -o ControlPath=none devbox 'echo ok'. Když čerstvé spojení projde, zruš master přes ssh -O exit devbox. Aby se to nestávalo, patří do ~/.ssh/config k devboxu ServerAliveInterval 20 a ServerAliveCountMax 3.

Sync spadne na přihlášení. Nejspíš nemáš klíč v agentu — ssh-add -l musí něco vypsat.

Akce v terminálu (rebuild, logy, nastavit porty) selžou v okně devcontaineru. Terminál v takovém okně běží uvnitř kontejneru, kde ssh alias devbox neexistuje. Pouštěj je z lokálního okna nebo z okna připojeného přes Remote-SSH.

Chová se to jako starší verze. Po aktualizaci extension drží VS Code v paměti tu původní, dokud okno nereloadneš: Ctrl+Shift+P → Developer: Reload Window.

Změna portů se neprojevila. Porty se do kontejneru dostávají při jeho vzniku, takže po jejich změně je potřeba Rebuild kontejneru, ne restart.

Jak to funguje uvnitř

Pár rozhodnutí, která nejsou z chování zřejmá:

  • Extension běží vždy na notebooku (extensionKind: ["ui"]), i v okně připojeném do devboxu. Sync sahá na produkci i na devbox, a na produkci vidí jen notebook.
  • Stav se čte jedním ssh dotazem — seznam složek, porty z jejich .env a docker ps naráz. Obnovuje se, jen když je panel viditelný.
  • Skript pro sync se stahuje z té instance, kterou synchronizuješ (.devcontainer/sync-devbox.sh), takže každá jede svou verzi a nic se nerozchází s repem.
  • Na docker compose extension nesáhne — zahodilo by to nadstavby, které do kontejneru přidává VS Code. Kontejnery se ovládají jednotlivě.
  • Ssh spojení se nikdy neruší přes ssh -O exit; shodilo by to i připojení samotného VS Code.
  • Při mazání složky může část souborů patřit rootovi — zapsaly je procesy z kontejneru. Zbytek proto uklidí kontejner běžící jako root, kterému se namountuje jen ta jedna složka.

Vývoj

npm install
npm run compile     # nebo: npm run watch
npm test            # unit testy čisté logiky (node --test)

Pak F5 → Extension Development Host. Vyžaduje, aby byla ve VS Code otevřená přímo složka vscode-devbox (kvůli .vscode/launch.json a tasku npm: compile).

Instalace do běžného VS Code:

make package
code --install-extension punktero-devbox-*.vsix --force

Po instalaci Developer: Reload Window.

Postup vydávání je v PUBLISHING.md (maintainer-only, nepublikuje se).

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft