- すごい広島 .rb with Python [76]
- 2023年7月26日
- @heronshoes (鈴木弘一)
- 鈴木 弘一
- GitHub/ex-Twitter: @heronshoes
- 福山市在住のRuby愛好家
- コーヒーとクラフトビールとMINIが好き。最近は短歌がマイブーム
- 開発コンテナ(Development Containers)便利だよ
- GitHubのリポジトリから、開発に必要な環境がすぐ作れる
- ローカルコンテナとクラウドCodespacesの両方で使えるよ
- 実例を RedAmberのリポジトリに作ってみたよ
- 開発に必要な環境まるごとを配布・構築するしくみ
- https://containers.dev/ に仕様がある
- VS CodeのRemote Containersと言っていたもの
- 今はVS Code用だけでなく汎用の仕様として定義
- 開発環境を作るのに、ローカルの環境を汚さない
- 同じ環境を作るのに便利(チームでの開発、教育用のデモ)
- 呼び方 { 開発コンテナ、Development Containers、Dev Container }
開発とCIの両方の用途。必要なものが多岐にわたる。
https://containers.dev/img/dev-container-stages.png
(デモ) https://github.com/red-data-tools/red_amber
- .devcontaner ディレクトリが追加されている
- devcontainer.json にソースツリーを含んだ開発環境全体を 構築するための設定が書かれている
- .devcontainer.jsonから既存の Dockerfile または docker-compose.yml を呼んでもよい
- image: Dev Container 用の Ubuntu ベースイメージを用意
- features: 加えたい機能をモジュール的に追加できる
- Python、Quarto、GitHub-CLIを追加している
- VS Codeの拡張も指定して入れることができる
- 環境変数の設定
- 非rootのユーザーは自動的に作られ、ownershipはローカルの環境と合致させている
- ここではRuby や Apache Arrowのインストールは features を使わず別のスクリプトでやっている
- GitHub Codespaces - クラウド上にある
- GitHub Free アカウントならば 60h/月/2コア, 保存容量 15GB/月まで無料(月末にリセット)
- 自分の使用状況はhttps://github.com/settings/billing の'Billing and plans / Plans and usage / Codespaces'で確認できる
- ちなみにinactiveな状態で30分経つと自動的に停止される(コンテナは残る)
- 自分のCodespacesのリストは https://github.com/codespaces で確認できる
(デモ) https://github.com/red-data-tools/red_amber
- ブラウザ上の VS Code アプリ
- 使い勝手はほとんど変わらない
- 最初に作るときは、この環境で20分弱かかります
(デモ)
- VS Codeデスクトップアプリから開くこともできる
- VS Codeを先に立ち上げておいて、Codespacesを開くこともできる
- ローカルにcloneしたディレクトリを、コンテナで開く
- Dockerが必要なかわりに、使用料はかからない。
(デモ)
- 動いているシステムとユーザー
- インストールされているツール
- RedAmberのテスト ... コンテナ内で開発ができる
- REPL で動作を確認
- Jupyter Lab
- .devcontainers ディレクトリを含まないディレクトリで開発コンテナを作る
- Codespacesを作る ... すぐ立ち上がる???
- Rubyも Pythonも Goも javaも入っていて gitも自分の環境になっている
- この環境は「devcontainers/universal」という汎用かつ最強のイメージ
- 「Add Dev Container configuration file」- 「Modify your active configuration」をしてみるとわかる - universal imageは高速で立ち上がり、容量クオータを消費しないという利点がある