Closed7
pythonの開発環境をdevcontainerで作成する
pythonでcliツールを作りたい、ということで試してみます。
ディレクトリ構成
.
├── .devcontainer
│ └── devcontainer.json
├── Dockerfile
└── docker-compose.yaml
- 使い慣れている
- 今後別のコンテナを追加するときに楽
ということでcomposeを利用します
devcontainer.json
なに?
devcontainerを定義するためのメタデータフォーマットです。
設定を追加する場合はこちらにかく。
詳細はこちらを参照
中身
{
"name": "python",
"dockerComposeFile": "../docker-compose.yaml",
"service": "app",
"features": {
"ghcr.io/devcontainers/features/aws-cli:1": {}
},
"workspaceFolder": "/app",
"customizations": {
"vscode": {
"extensions": [
"ms-python.python"
]
}
}
}
中身のメモ
パラメータはここを見ればOK
-
dockerComposeFile
- composeファイルを使う際に必要
-
service
- composeファイル内のdevcontainerとするサービスを指定
-
features
- プラグインのようなもの?
- 今回はawscliを指定
- インストール出来るfeaturesの一覧はこちら
-
extensions
- コンテナ内で使用する拡張機能を指定
- 「拡張機能IDのコピー」を選択すればdevcontainer.jsonに追加される
Dockerfile
FROM mcr.microsoft.com/vscode/devcontainers/python:3.10-bullseye
RUN apt update && apt install -y tree
RUN python -m pip install --upgrade pip
RUN pip install --no-cache-dir boto3 InquirerPy
ベースイメージはmicrosoftが公開しているものを使います。
郷に従いましょう
ちなみに結構重い
mcr.microsoft.com/vscode/devcontainers/python 3.10-bullseye fee3328cc1d1 4 months ago 1.41GB
compose
docker-compose
version: '3'
services:
app:
container_name: python
build:
context: .
dockerfile: Dockerfile
tty: true
volumes:
- .:/app
- ~/.aws:/<AWSクレデンシャルの場所>
environment:
- TZ=Asia/Tokyo
- awscli、boto3に必要なクレデンシャルをホストと共有しています
-
TZ=Asia/Tokyo
でタイムゾーンを日本にしています
あとはvscodeで対象ディレクトリに移動し、
>dev containers: rebuild container
を指定できればOK
このスクラップは2023/05/27にクローズされました