Streamlit をコンテナ越しで serve する

Streamlit をコンテナ内で動かし、ホスト/ngrok 経由で触るときの定番フラグと段取り。

  • 起動フラグ
    • --server.port 8501(ポート固定)
    • --server.headless true(サーバー文脈なのでブラウザ自動起動を抑止)
    • --server.enableCORS false / --server.enableXsrfProtection false (ngrok やポートフォワード越しのアクセスでブロックされないように)
  • ポート競合を先に潰す:再起動前に pkill -f streamlit || true(古いプロセスが 8501 を掴んだまま だと起動に失敗する)。
  • devコンテナで自動化devcontainer.jsonforwardPorts: [8501, 8502] でホストに転送し、 postAttachCommandnohup streamlit run ... & でアタッチ時に自動起動(手動起動すら不要にできる)。
  • 外から触らせるなら → ngrokで外部公開。ホストから起こすなら → Windowsホストからコンテナのアプリを起動する

出典:gemini-ragstart.sh)、task-launcher.devcontainer/devcontainer.json