[Docker, WSL2, Git, VS Codeを使ってWindowsでpython開発環境構築] 5. VS Code上でのDockerの操作(Dev Container)

環境ファイルの作成

VS CodeにDev Containerという拡張機能を入れましたが、これを使ってVS Code上でDockerコンテナを操作します

これから設定ファイルを作りますが、次のようなフォルダ構成となります

+- .devcontainer
|  +- Dockerfile
|  +- devcontainer.json
|  +- docker-compose.yml
+- test.py
+- python_test.code-workspace
+- README.md

新たに.devcontainerというフォルダを作り、.devcontainerに仮想環境の設定ファイルを入れます

はじめに、Dev Containerが見る設定ファイルを作ります

{
    "name": "docker-python-test",
    "service": "python",
    "dockerComposeFile": "docker-compose.yml",
    "remoteUser": "vscode",
    "workspaceFolder": "/work",
    "customizations": {
      "vscode": {
        "extensions": [
          "ms-python.python"
        ]
      }
    }
}
  • name : Dev Containerのコンテナ名
  • service : docker composeのサービス名
  • dockerComposeFile : docker composeファイルの名前
  • remoteUser : 作られたコンテナ(仮想環境)にログインするユーザー名
  • workspaceFolder : ユーザーがログインするときのデフォルトフォルダ
  • extensions : VS Codeの拡張機能をコンテナ内で利用する場合は、ここで指定する

extensionsの名前(例えば、ms-python.pytnon)はVS Codeの拡張機能の右下の、識別子の欄に記載してあるので、必要に応じてこれを追加すればOK

次はdocker-composeファイルの作成。
pythonを少し動かす程度なら、docker-composeなんて使わずに、dockerfile単体でコンテナを作ればいいです。でも、今後webアプリやnotebookなどの、実用的な利用を考えると、docker-comoposeでサービスを複数立ち上げられるようにしておくのがいいと思います

services:
  python:
    container_name: 'python'  
    hostname: 'python'        
    build: .
    restart: always
    working_dir: '/work' 
    tty: true
    volumes:                  
      - type: bind            
        source: ..  
        target: /work

docker-compose.ymlから見て、ひとつ上のフォルダ=プロジェクトフォルダを、仮想環境上の/workへマウントして、繋げます

最後はDockerfileの作成。とりあえず、安定版の3.10のスリムを入れます
それと、一応gitも入れます

FROM python:3.10-slim

ARG USERNAME=vscode
ARG USER_UID=1000
ARG USER_GID=$USER_UID

ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TZ JST-9
ENV TERM xterm

RUN apt-get update \
    && groupadd --gid $USER_GID $USERNAME \
    && useradd -s /bin/bash --uid $USER_UID --gid $USER_GID -m $USERNAME \
    && apt-get install -y sudo \
    && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
    && chmod 0440 /etc/sudoers.d/$USERNAME \
    && apt-get -y install locales \
    && localedef -f UTF-8 -i ja_JP ja_JP.UTF-8

RUN apt-get -y install git

3つのファイルが用意できたら、それらを.devcontainerへ入れます。

仮想環境の起動

左下の青い><アイコンをクリックします
すると、起動する仮想環境を聞かれます。
「コンテナーで再度開く」を選択します

ワークスペースを保存しろという意味の、怪文書を通知されました。

右上の「ファイル」→「ワークスペースの保存」を押して、ワークスペースを保存します

再度、「コンテナーで再度開く」を試すと、VS Codeが再起動します。
初めてコンテナを開くときは、Dockerfileのビルドからするので、少し時間がかかります。

少し待つと、コンテナの中身のディレクトリを表示したVS Codeが起動します

以降は、プログラムの実行をここで行います

ちなみに、この新しく開かれたVS Codeはコンテナ上で開かれた物として認識されているので、Gitはここでは利用しません

もちろん、コンテナ上でGitを利用することも、設定をすれば可能です
しかしここでは、Gitは一度コンテナを抜けて、プロジェクトフォルダ全体をVS Codeで開いたときに利用します。

仮想環境のコンテナを抜ける際は、再度右下の青い><アイコンを押すと、「リモートを終了する」という選択肢がでるので、これを押して抜けます

仮想環境内でのプログラムの実行

基本的には仮想環境内のターミナルで実行することになります

ターミナルの起動は上のバーから、「表示」→「ターミナル」です

このターミナルは仮想環境内のターミナルなので、ここでプログラムを実行すれば良いです
試しに、python test.pyと入力すれば、test.pyが実行されます

もしくは、タブの右側の方にある、三角形マークをおしても実行できます

これで、仮想環境内でのプログラムの実行ができました

仮想環境上でのGitの操作

安全でない可能性がある等のメッセージが表示され、ソース管理のアイコンを押してもGitの差分管理が表示されないことがあります

この場合は、Manage Unsafe Repositoriesを押すと、安全なレポジトリを選択してくれと、言われるので、選択すれば使えるようになります

以上で、「Docker, WSL2, Git, VS Codeを使ってWindowsでpython開発環境構築」の話は終わりになります。

タイトルとURLをコピーしました