Skip to content

Instantly share code, notes, and snippets.

@heronshoes
Last active August 31, 2023 23:48
Show Gist options
  • Save heronshoes/4e707bbc92ceee60d71fc09007e01d02 to your computer and use it in GitHub Desktop.
Save heronshoes/4e707bbc92ceee60d71fc09007e01d02 to your computer and use it in GitHub Desktop.
開発コンテナ(Development Containers)を使おう

開発コンテナ(Development Containers)を使おう

  • すごい広島 .rb with Python [76]
  • 2023年7月26日
  • @heronshoes (鈴木弘一)

自己紹介

  • 鈴木 弘一
  • GitHub/ex-Twitter: @heronshoes
  • 福山市在住のRuby愛好家
  • コーヒーとクラフトビールとMINIが好き。最近は短歌がマイブーム

今日のお話

開発コンテナとは何か

  • 開発に必要な環境まるごとを配布・構築するしくみ
  • VS CodeのRemote Containersと言っていたもの
    • 今はVS Code用だけでなく汎用の仕様として定義
  • 開発環境を作るのに、ローカルの環境を汚さない
  • 同じ環境を作るのに便利(チームでの開発、教育用のデモ)
  • 呼び方 { 開発コンテナ、Development Containers、Dev Container }

開発コンテナの位置づけ

開発とCIの両方の用途。必要なものが多岐にわたる。

https://containers.dev/img/dev-container-stages.png

Dev Containers対応のGitHubリポジトリ

(デモ) https://github.com/red-data-tools/red_amber

  • .devcontaner ディレクトリが追加されている
    • devcontainer.json にソースツリーを含んだ開発環境全体を 構築するための設定が書かれている
  • .devcontainer.jsonから既存の Dockerfile または docker-compose.yml を呼んでもよい

devcontainer.json でやっていること

  • image: Dev Container 用の Ubuntu ベースイメージを用意
  • features: 加えたい機能をモジュール的に追加できる
    • Python、Quarto、GitHub-CLIを追加している
    • VS Codeの拡張も指定して入れることができる
  • 環境変数の設定
  • 非rootのユーザーは自動的に作られ、ownershipはローカルの環境と合致させている
  • ここではRuby や Apache Arrowのインストールは features を使わず別のスクリプトでやっている

開発コンテナを立ち上げてみる(1)

  • GitHub Codespaces - クラウド上にある
  • GitHub Free アカウントならば 60h/月/2コア, 保存容量 15GB/月まで無料(月末にリセット)
  • ちなみにinactiveな状態で30分経つと自動的に停止される(コンテナは残る)
  • 自分のCodespacesのリストは https://github.com/codespaces で確認できる

GitHub Codespacesをブラウザで

(デモ) https://github.com/red-data-tools/red_amber

  • ブラウザ上の VS Code アプリ
    • 使い勝手はほとんど変わらない
  • 最初に作るときは、この環境で20分弱かかります

GitHub CodespacesをVS Code デスクトップアプリで

(デモ)

  • VS Codeデスクトップアプリから開くこともできる
  • VS Codeを先に立ち上げておいて、Codespacesを開くこともできる

開発コンテナを立ち上げてみる(2)

  • ローカルにcloneしたディレクトリを、コンテナで開く
  • Dockerが必要なかわりに、使用料はかからない。

(デモ)

開発コンテナを使ってみる

https://github.com/red-data-tools/red_amber/blob/main/doc/Dev_Containers.ja.md#%E5%8B%95%E4%BD%9C%E3%81%AE%E7%A2%BA%E8%AA%8D

  • 動いているシステムとユーザー
  • インストールされているツール
  • RedAmberのテスト ... コンテナ内で開発ができる
  • REPL で動作を確認
  • Jupyter Lab

開発コンテナはすぐ作れる

  • .devcontainers ディレクトリを含まないディレクトリで開発コンテナを作る
    • Codespacesを作る ... すぐ立ち上がる???
    • Rubyも Pythonも Goも javaも入っていて gitも自分の環境になっている
    • この環境は「devcontainers/universal」という汎用かつ最強のイメージ
    • 「Add Dev Container configuration file」- 「Modify your active configuration」をしてみるとわかる  - universal imageは高速で立ち上がり、容量クオータを消費しないという利点がある
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment