Closed7

pythonの開発環境をdevcontainerで作成する

not75743not75743

ディレクトリ構成

.
├── .devcontainer
│   └── devcontainer.json
├── Dockerfile
└── docker-compose.yaml
  • 使い慣れている
  • 今後別のコンテナを追加するときに楽

ということでcomposeを利用します

not75743not75743

devcontainer.json

なに?

devcontainerを定義するためのメタデータフォーマットです。
設定を追加する場合はこちらにかく。

詳細はこちらを参照
https://containers.dev/overview

中身

{
	"name": "python",
	"dockerComposeFile": "../docker-compose.yaml",
	"service": "app",
	"features": {
		"ghcr.io/devcontainers/features/aws-cli:1": {}
	},
	"workspaceFolder": "/app",
	"customizations": {
		"vscode": {
			"extensions": [
				"ms-python.python"
			]
		}
	}
}
not75743not75743

中身のメモ

パラメータはここを見ればOK
https://containers.dev/implementors/json_reference/

  • dockerComposeFile
    • composeファイルを使う際に必要
  • service
    • composeファイル内のdevcontainerとするサービスを指定
  • features
  • extensions
    • コンテナ内で使用する拡張機能を指定
    • 「拡張機能IDのコピー」を選択すればdevcontainer.jsonに追加される
not75743not75743

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が公開しているものを使います。
郷に従いましょう
https://github.com/microsoft/vscode-dev-containers/tree/v0.245.2/containers

ちなみに結構重い

mcr.microsoft.com/vscode/devcontainers/python     3.10-bullseye          fee3328cc1d1   4 months ago     1.41GB
not75743not75743

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でタイムゾーンを日本にしています
not75743not75743

あとはvscodeで対象ディレクトリに移動し、
>dev containers: rebuild containerを指定できればOK

このスクラップは2023/05/27にクローズされました