Punktero DevboxSpráva devbox instancí přímo z VS Code: seznam instancí, jejich porty a stav kontejnerů, otevírání do nového okna, ovládání kontejnerů, sync dat z produkce a zakládání nových instancí. Proč
|
| Akce | Jak běží |
|---|---|
| Otevřít v devcontaineru | nové okno na vscode-remote://dev-container+…@ssh-remote+<host>/<workspaceFolder> |
| Otevřít složku (Remote-SSH) | nové okno na vscode-remote://ssh-remote+<host>/…; jediná volba u nenakonfigurované instance |
| Otevřít web | http://localhost:<DEVBOX_WEB_PORT> v prohlížeči; nejdřív ověří, že forward vůbec existuje |
| Spustit / Zastavit / Restartovat | docker start\|stop\|restart kontejnerů compose projektu — nerekreuje je, takže devcontainer features zůstanou |
| Rebuild kontejneru | terminál: devcontainer up --workspace-folder . --remove-existing-container |
| Logy služby | terminál: docker logs -f --tail 200 |
| Nastavit porty | terminál: make devcontainer (interaktivní, potřebuje TTY) |
| Sync dat z produkce | withProgress + log v OutputChannelu „Devbox" |
| Nová instance… | tři režimy, viz níže |
| Smazat instanci… | kontejnery + volumes + images + složka; jen z kontextového menu, po soupisu a opsání jména. Root-owned soubory ve storage/ (zapsané kontejnery) uklidí kontejner běžící jako root |
Zakládání instancí
| Režim | Co udělá |
|---|---|
| Podle vzoru | naklonuje repo vybrané instance (její remote + větev), převezme její .env a generate-config.sh --yes najde volný blok portů |
| Z URL repozitáře | nový projekt: naklonuje zadané URL (volitelně větev). Porty se nastaví, jen pokud si repo nese .devcontainer/generate-config.sh |
| Jen prázdná složka | mkdir na devboxu, repo i konfiguraci si pořešíš sám |
Data se v žádném režimu nekopírují — dotáhnou se až syncem, takže se nikam
nepřenáší ~6 GB storage/app.
Aktuální instance
Instance, ve které stojí tohle okno, je ve stromu zvýrazněná a rozbalená.
Pozná se z URI otevřené složky: v Remote-SSH okně je to rovnou cesta,
v okně devcontaineru se vytáhne hostPath z hex authority. Podsložka instance
se počítá jako ta instance; muj-projekt nechytne muj-projekt-2.
Proč „Otevřít web" nejdřív zkouší port
Web port se na devboxu nepublikuje — forward staví okno VS Code připojené do instance a končí na localhostu notebooku. Když instanci nemá otevřenou žádné okno, adresa by v prohlížeči jen spadla. Extension proto port napřed zkusí a nabídne otevření instance v devcontaineru.
Extension nikdy nesahá na docker compose (zahodilo by devcontainer features)
ani nedělá ssh -O exit (shodilo by i připojení VS Code).
Konfigurace
| Nastavení | Výchozí | K čemu |
|---|---|---|
punkteroDevbox.host |
devbox |
ssh cíl devboxu |
punkteroDevbox.projectsRoot |
~/projects |
kde na devboxu leží instance |
punkteroDevbox.refreshInterval |
30 |
obnovování stavu (s), 0 vypne |
punkteroDevbox.syncProfiles |
[] |
volitelné přepisy hodnot z Makefilu |
Odkud se berou hodnoty pro sync
Primárně z Makefile té instance na devboxu (SERVER, SERVER_DIR, DB_NAME,
DB_USER, DEVBOX_DB_PWD) — jeden zdroj pravdy s repem a nulová konfigurace.
Profil v syncProfiles je umí přepsat; první profil, jehož match (glob) sedí
na jméno instance, vyhrává:
"punkteroDevbox.syncProfiles": [
{ "match": "muj-projekt*", "server": "root@192.0.2.10", "dbName": "muj_projekt" }
]
Heslo k produkční databázi žije v SecretStorage pod klíčem
server::databáze — tedy jednou pro všechny instance téhož projektu. Když
uložené není a v Makefilu instance ho najde, extension nabídne převzetí.
Z Makefilu ho pak stojí za to smazat, je v gitu.
Sám skript sync-devbox.sh se stahuje z .devcontainer/ té instance, kterou
synchronizuješ — každá instance tak jede svou verzi. drop-all-tables.sql si
extension nese vlastní v resources/, takže nezávisí na ničím osobním repu.
Kroky navíc oproti make sync-devbox
chmod-data—make sync-devboxho má jako prerekvizitu, ale vsync-devbox.shnení. Extension ho dělá jako krok 0; vypne se profilem"chmodData": false.- volba portu tunelu — skript má
DEVBOX_TUNNEL_PORTnapevno na 2222, takže dva souběžné syncy by se o něj poprvaly. Extension vybere volný port z rozsahu 2222–2321 a předá ho v prostředí.
Vývoj
npm install
npm run compile # nebo: npm run watch
npm test # unit testy čisté logiky (node --test)
Pak F5 → Extension Development Host; F5 vyžaduje, aby ve VS Code byla
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-0.1.0.vsix --force
Po instalaci Developer: Reload Window. Panel má vlastní ikonu v Activity
Baru (Devbox), ne sekci v Exploreru — ten bývá přeplněný a pořadí sekcí
v něm nastavit nejde (contributes.views nemá order).
Poznámka k terminálovým akcím
Terminál vzniká vždy na straně okna, ne extension hostu. Z lokálního okna se
příkaz zabalí do ssh -t <host>; když je okno už připojené přes Remote-SSH do
téhož devboxu, pustí se rovnou. V okně připojeném do devcontaineru terminál
běží uvnitř kontejneru, kde alias devbox nemusí existovat — takové akce pouštěj
z lokálního okna.