SENSYデータサイエンティストチーム井上です。
今回もVS Codeを用いた業務効率化関連の記事になります。
背景&目的
前回
- VS CodeでGCEインスタンスにRemoteアクセス
- この記事の続編になります。
補足事項
- 今回は再現性を取るために、python:3.10-slimのイメージを使用して環境を揃えておきます
- そのため、Dockerの知識があるとわかりやすいです。
- Dockerの記事は他の方々が素晴らしい記事を書いているので、そちらを確認頂けたらと思います。
- そのため、Dockerの知識があるとわかりやすいです。
VS Codeで追加が必要な拡張機能
- Dev Containers
- 制作者:Microsoft
手順
1. インスタンス上でDocker初期環境構築
コマンド
sudo apt update sudo apt install -y docker.io sudo systemctl start docker sudo systemctl enable docker sudo apt install docker-compose sudo usermod -aG docker $(whoami) sudo reboot
2. .devcontainer
等必要なディレクトリ&ファイルの作成
ディレクトリ構造
sample-vscode-dev-env <- 自分で作成したプロジェクト(ディレクトリ) ├── .devcontainer │ ├── Dockerfile │ ├── devcontainer.json │ └── docker-compose.yml └── requirements.txt
Dockerfile
# Python 3.10 base image. FROM python:3.10-slim # 必要なパッケージをインストール RUN apt-get update && apt-get install -y \ build-essential \ bash-completion \ coreutils \ tree \ && rm -rf /var/lib/apt/lists/* # 作業ディレクトリを設定 WORKDIR /workspace # requirements.txtをコンテナ内にコピー COPY requirements.txt . # 依存パッケージをインストール RUN pip install --upgrade pip RUN pip install -r requirements.txt # lsコマンドで色を有効化 RUN echo "alias ls='ls --color=auto'" >> /etc/bash.bashrc # Jupyter用のポートを開放 EXPOSE 8888
devcontainer.json
{ "name": "Sample VScode Development Environment", "dockerComposeFile": ["docker-compose.yml"], "service": "app", "workspaceFolder": "/workspace", "settings": { "python.pythonPath": "/usr/local/bin/python" }, "extensions": [ "ms-python.python", "ms-toolsai.jupyter", "ms-python.vscode-pylance", "ms-vscode-remote.remote-containers" ] }
- 開発コンテナの設定を記述するメインのファイル
docker-compose.yml
version: '3' services: app: build: context: .. dockerfile: .devcontainer/Dockerfile volumes: - ..:/workspace:cached ports: - "8888:8888" tty: true
version
:Docker Composeファイルのバージョンを指定services
:コンテナとして動かすアプリケーションやサービスを定義app
:サービスの名前build
:Dockerイメージをビルドするための設定を指定context: ..
:親ディレクトリ(..
)をコンテキストとして指定- Dockerビルド時に、このディレクトリ以下のファイルがコンテナのビルドコンテキストとして利用
dockerfile: .devcontainer/Dockerfile
:.devcontainer/Dockerfile
を指定volumes
:-..:/workspace:cached
ports
:"8888:8888"
- ホストのポート8888をコンテナのポート8888にマッピング
tty
:true
- 仮想端末の有効化
requirements.txt
numpy pandas jupyter notebook ipykernel
3. Dockerをビルドする
1. プロジェクトのディレクトリを開く
- コマンドパレット(
cmd
+shift
+P
)を開き、File: Open Folder...
を選択する
- プロジェクトのパスを指定し、
OK
を選択する
2. ビルドの実行
- コマンドパレット(
cmd
+shift
+P
)を開き、Dev Containers: Rebuild and Reopen in Container
を選択する
3. ビルドの完了
VS Code
の左下のステータスバーが、こんな感じになっていればビルド成功!!
4. Jupyter Notebook
の動作確認
1. 空のノートブックを作成してみる
. ├── .devcontainer │ ├── Dockerfile │ ├── devcontainer.json │ └── docker-compose.yml ├── notebook │ └── sample.ipynb <- 例 └── requirements.txt
2. VS code
でノートブックを開き、Kernel
を選択
1.作業したいノートブックを開いて、下図のようにノートブックの右上にある『Select Kernel』を選択する
2.『Python Environments...』を選択する
3.dockerで構築時に指定したPythonのバージョンのPythonがあるはずなのでそれを選択する
4.上記3.で指定したPythonのバージョンが表示される
5.以下のようにコードが実行されれば、動作完了!!
補足事項
一度作成したコンテナへ再度入る方法
Dev Containers: Reopen in Container
を選択すれば、コンテナに入れる!!