macOSでColima+VSCodeでPython開発する方法

  • このエントリーをはてなブックマークに追加

 Dockerで開発環境を構築したいけれどDocker Desktopは一定規模以上の商用利用で有料になります。そこで本記事では、無料で使えるColimaを使ってmacOS上にDocker環境を構築し、VSCodeのDev ContainersでPython開発を最短で始める手順をまとめます。

こんにちは。wat(@watlablog)です。今回はColima環境でVSCode Dev Containersによる開発環境構築に入門します!

動作環境

 この記事の内容は以下の環境で動作を確認しました。

Mac OS macOS Sonoma 14.5
チップ Apple M3
CPU 1.4[GHz]
メモリ 16[GB]

 以下の記事で紹介しているVSCodeの内容は既知のものとします。
M3 Macでvenv/VSCodeによるPython環境を構築するときの備忘録

コンテナ開発の関連用語と記事のモチベーション

コンテナとは?

Advertisements

 コンテナContainer)はアプリを動かすのに必要なもの(OSの一部・Python本体・ライブラリなど)をひとまとめにした実行環境の箱です。同じ箱を使えばmacOSでもLinuxサーバーでもほぼ同じ環境でアプリを動かせます。
 Dockerとは、コンテナを「作る(build)」「配る(registry/pull)」「動かす(run/compose)」までを一通り備えたコンテナ開発のスタンダード的なツールの一種です。 Dockerfileに環境を定義しておけば、誰でも同じ手順で同じ環境を再現できます。

 コンテナ開発をすることでOSやPython本体/ライブラリの違いで動かない問題を減らすことができます(環境差分の軽減)。また、作った環境をそのままサーバーに持っていけるので配布が簡単というメリットがあります。

Docker DesktopではなくColimaを使う理由

 macOSでDockerを使う定番はDocker Desktopですが、一定規模以上(2026年1月現在は250名以上)の企業で商用利用をすると有料のサブスクリプションが必要です。個人で開発する分には全く問題ないのですが、色々慣れた方法を会社でも使いたい、でもあまり使う人はいないのでサブスクリプションはちょっとな〜、という場合もあると思います。会社なんだから、というツッコミはあるかもしれませんが、大規模チームでも無料で商用利用できるツールを使うのも選択肢の一つです。

 ColimaはMITライセンスで商用利用が可能です。Docker Desktopを使わず、macOS上でDockerエンジンを動かせるので個人開発からチーム利用まで無料で始めやすいのが魅力です。詳しくは以下の公式ページをご確認ください。
https://github.com/abiosoft/colima

Dev Containersとは?

 Dev Containersは、VSCodeでプロジェクトを開くときに「開発環境そのものをコンテナの中に置く」ための仕組みです。通常のDocker開発ではコンテナは起動していても、VSCodeやPython拡張、ターミナルはローカル(macOS側)の環境を参照しがちです。
 Dev Containersを使うと、VSCodeがコンテナ内に接続して「このリポジトリを開けば誰でも同じPythonのバージョン・同じライブラリ構成で作業できる」状態を作りやすくなります。Pythonのバージョンや依存ライブラリ、必要なVSCode拡張などをプロジェクト単位で再現できるのが大きなメリットです。

 この記事はコンテナ開発を全くやったことのない筆者がこれらのメリットや開発スタイルに入門するときの備忘録をまとめたものです。それでは早速開発環境構築手順を紹介していきます。

ColimaとDockerの準備

Colimaのインストール

  brewコマンドで colimaをインストールします。

Docker CLIのインストール

 同様に dockerもインストールします。Colimaは「コンテナを動かすLinux環境」を作りますが、macOS側から操作するにはDocker CLICommand Line interface)が必要です。

docker composeをインストール

  docker-composeもインストールします。

 こちらの環境ではHomebrewで入れた docker-composeをDocker CLIが見つけられないケースに直面しました。その場合、 .docker/config.jsonを作成してプラグインの場所を教えるという解決策があります。
  docker compose versionのコマンドが通らなかった場合は次の操作を行ってみましょう。

  .dockerフォルダを作成し、 config.jsonファイルを作成しましょう。

 次のコマンドで動作確認を行います。

  config.jsonを作成してもバージョンが表示されない場合は次を試すのも良いと思います。Dockerは標準で ~/.docker/cli-plugins/を見に行くため、そこに docker-compose を置くという解決方法です。

  docker compose versionでバージョンが表示されればOKです。

Colimaの起動と接続確認

 Colimaを起動します。

 次にDockerエンジンにん接続できているかを確認します。

  Server:に情報が入っていればOK。

 次のコマンドを実行してPythonのバージョンが表示されればOKです。初回はイメージのダウンロードがされます。

 ここまででColima上でコンテナ実行が完了しました。

VSCode Dev Containersによる開発準備

プロジェクトファイル構成

 先ほどの操作が実施されていればターミナルを落としてもcolimaは動作しているはずですが、 colima start already runningになっているか確認します。

 任意の場所でプロジェクトフォルダを作成し、次の構成にします。

 空のファイルでも良いので次のコマンドで一度に作っておくと便利かもしれません。

 ここから各種ファイルをVSCodeで編集していきます。

Dev containersのVSCode拡張をインストール

 VSCodeを立ち上げるとDev Containersの拡張をインストールするか聞いてくるので Installする。

Dev containers拡張のインストール

 その他、Python Extensionもインストールしておきましょう。

ファイルを編集する

各種ファイルの内容を記載していきます。

requirements.txt

  requirements.txtを編集してインストールしたい外部ライブラリを書きます。今回は例題としてNumPyのみです。

Dockerfile

Dockerfileに以下を記述します。これは Python 3.12のベースイメージを使い、 requirements.txtをインストールするだけのシンプルな構成です。後述する devcontainer.jsonでPythonバージョンが指定されなければ 3.12が使われるという意味です。

.devcontainer/devcontainer.json

 このファイルがDev Containersの本体です。 "args"に記載されているPythonバージョンを変更することで、DockerfileのPythonバージョン初期値が引数として渡され変更されます。
 また、 extensionsでコンテナ内にPython拡張を入れています。
 さらに python.defaultInterpreterPathコンテナ内のPythonを使用するようにしています。これがないと筆者の環境ではVSCodeが別のプロジェクトの仮想環境 venvを勝手に読み込んでしまうという挙動をしたため、対策的に記述しました。

各ケースのVSCode操作

初期

 プロジェクトフォルダの直下で code .コマンドを実行してVSCodeを開きます。この段階ではまだローカル環境で開かれた状態ですが、Command+Shift+Pでコマンドパレットを開き、 Dev Containers: Reopen in Containerを実行します。こうすることでコンテナとしてVSCodeを開くことができます。

Pythonのバージョンを変更する

  devcontainer.json "PYTHON_VERSION"を変更します。

 VSCodeのコマンドパレットを開き(command+Shift+P)、 Dev Containers: Rebuild Containerを実行し変更を反映します。Pythonファイルを表示して右下のバージョン情報が変更されていればOKです。

外部ライブラリを変更する

  requirements.txtに新しく追加する外部ライブラリを記述、もしくはバージョン情報を変更します。

 VSCodeのコマンドパレットを開き(command+Shift+P)、 Dev Containers: Rebuild Containerを実行し変更を反映します。Pythonファイルを表示して右下のバージョン情報が変更されていればOKです。

まとめ

 この記事ではColimaを使ったPythonプログラミングに入門してみました。Pythonや外部ライブラリのバージョンを切り替えたりする程度の基礎的な操作しか紹介していませんが、とりあえずコンテナを使うことはできるようになりました。
 コンテナ内でGitを使ったり他の人に配布したり、他の人のイメージや設定を使ってコンテナをつくったりは今後必要に応じてやってみようと思います。

Colima+Dev Containersに入門してDockerを使ってみました!
Xでも関連情報をつぶやいているので、wat(@watlablog)のフォローお待ちしています!

  • このエントリーをはてなブックマークに追加

SNSでもご購読できます。

コメントを残す

*