Dockerコンテナでユーザー画面を作成するには?

Dockerコンテナでユーザー画面を作成するには?

vdir 実行: UNIX初期化方式サービス監督としてfromは、runit特定のサービスが終了した場合に再実行するための素晴らしいツールです。ディレクトリの変更inotifyを監視します。ディレクトリのスクリプトを永久に実行します。

私は次の構造を持っています:

$ tree app
app
├── service
│   ├── run
│   └── supervise
├── replay
│   ├── run
│   └── supervise
└── run
    ├── run
    └── supervise

私がしたいことは次のとおりです。これ(リンクで解決策を試しましたが失敗しました)app/run/runapp/replay/run

su - user -c screen -S run<<EOF
[...]
# code
EOF

runsvdir//で複数のインスタンスが実行されないようにするには、コードをブロック/待機する必要があります。

コードはコンテナからルートとして実行されますdocker。ここではないsystemd

私は避けたいプロセスのPIDが期限切れになった複数のソリューションをテストしました。私は明らかな何かを見逃しています。

どんなアイデアがありますか?

  • Debian 11 は来週まで ;)
  • ルーニー2.1.2-41

コメント/編集:で実行/再生を強制的に生成しませんinit。シェルスクリプト(bash)かもしれません。一度だけ実行する必要がありますscreen

答え1

その後、修正は次のようになりますdocker build .

docker exec -d -u mevatlave cont screen -d -m -S run ./run
docker exec -d -u mevatlave cont screen -d -m -S replay ./replay.sh
docker exec -it -u mevatlave cont screen -x run

関連情報