Files
stem-launcher/doc/containers.md
T
2026-04-29 01:09:41 +02:00

3.4 KiB

Containers

Ten dokument opisuje docelowy model komend rvctl do uruchamiania srodowiska programistycznego w kontenerach.

Zasada

Kontener jest srodowiskiem pracy dla wybranej karty, opcjonalnie zawezonym do konkretnego zadania. rvctl uruchamia je przez sesje tmux, tak aby terminal z kontenerem byl latwy do ponownego podlaczenia.

Uzywamy namespace containers, a nie container, bo jest spojny z pluralnymi namespace'ami tokens, cards i tasks.

Szybki Flow

Typowy przeplyw pracy:

./rvctl tokens compare
./rvctl series cards show inf 03
./rvctl series cards tasks list inf 03
./rvctl containers show inf 03
./rvctl containers start inf 03 --session rv-inf03 --attach
./rvctl containers list
./rvctl containers stop rv-inf03

Model

Docelowo komendy containers pracuja na trzech warstwach:

  • karta pracy, np. inf 03
  • opcjonalne zadanie, np. --task task1
  • instancja srodowiska, np. --instance shell

Domyslne wartosci pochodza z workspace.json:

defaults.series
defaults.card
defaults.task
defaults.instance
defaults.tmux_session
defaults.tmux_window

Komendy

containers show [SERIES] [CARD]

Pokazuje plan uruchomienia srodowiska bez tworzenia sesji tmux.

./rvctl containers show inf 03
./rvctl containers show inf/03 --task task1

Typowe pola:

selector        inf/03
task            task1
card_path       ~/dev/workspace/rv/series/inf/03
task_path       ~/dev/workspace/rv/series/inf/03/task1
tools_root      ~/dev/workspace/rv/tools/rv32i-hazard3-env
session         rv-inf03
window          rv
instance        shell

Ta komenda jest odpowiednikiem obecnego trybu:

./rvctl tmux-container inf 03 --dry-run

containers start [SERIES] [CARD]

Uruchamia sesje tmux i kontener dla wybranej karty.

./rvctl containers start inf 03
./rvctl containers start inf/03 --session rv-inf03
./rvctl containers start inf 03 --task task1 --instance shell --attach

Przelaczniki:

  • --task TASK Wybiera zadanie w karcie. Bez tego rvctl uzywa domyslnego zadania z workspace.json albo pracuje na katalogu karty.
  • --session NAME Nadpisuje nazwe sesji tmux.
  • --window NAME Nadpisuje nazwe okna tmux.
  • --instance NAME Ustawia wariant srodowiska, np. shell.
  • --attach Po uruchomieniu od razu podlacza terminal do sesji.

containers list

Listuje aktywne srodowiska uruchomione przez rvctl.

./rvctl containers list

Przykladowy wynik:

session   selector  task   instance  window
--------  --------  -----  --------  ------
rv-inf03  inf/03    task1  shell     rv

containers attach SESSION

Podlacza terminal do istniejacej sesji.

./rvctl containers attach rv-inf03

Technicznie odpowiada to:

tmux attach -t rv-inf03

containers stop SESSION

Zamyka sesje tmux, a razem z nia uruchomiony w niej proces kontenera.

./rvctl containers stop rv-inf03

Technicznie odpowiada to:

tmux kill-session -t rv-inf03

Aliasowanie Starej Komendy

Stara komenda moze zostac jako alias kompatybilnosci:

tmux-container inf 03 --dry-run      -> containers show inf 03
tmux-container inf 03 --session NAME -> containers start inf 03 --session NAME
tmux-container inf/03 --attach       -> containers start inf/03 --attach

Dokumentacja i nowe przyklady powinny promowac namespace containers.