環境ファイルの作成
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
![](https://emoclework.jp/wp-content/uploads/2024/05/b231edd28a8e-20240204.png)
次は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へ入れます。
![](https://emoclework.jp/wp-content/uploads/2024/05/aefa19f4bd82-20240205.png)
仮想環境の起動
![](https://emoclework.jp/wp-content/uploads/2024/05/6da13ff0aa13-20240204.png)
左下の青い><アイコンをクリックします
すると、起動する仮想環境を聞かれます。
「コンテナーで再度開く」を選択します
![](https://emoclework.jp/wp-content/uploads/2024/05/36f9d1b8df1e-20240205.png)
ワークスペースを保存しろという意味の、怪文書を通知されました。
![](https://emoclework.jp/wp-content/uploads/2024/05/ee9b525d0cf4-20240204.png)
右上の「ファイル」→「ワークスペースの保存」を押して、ワークスペースを保存します
再度、「コンテナーで再度開く」を試すと、VS Codeが再起動します。
初めてコンテナを開くときは、Dockerfileのビルドからするので、少し時間がかかります。
少し待つと、コンテナの中身のディレクトリを表示したVS Codeが起動します
![](https://emoclework.jp/wp-content/uploads/2024/05/14844dc37dfd-20240205.png)
以降は、プログラムの実行をここで行います
ちなみに、この新しく開かれたVS Codeはコンテナ上で開かれた物として認識されているので、Gitはここでは利用しません
もちろん、コンテナ上でGitを利用することも、設定をすれば可能です
しかしここでは、Gitは一度コンテナを抜けて、プロジェクトフォルダ全体をVS Codeで開いたときに利用します。
仮想環境のコンテナを抜ける際は、再度右下の青い><アイコンを押すと、「リモートを終了する」という選択肢がでるので、これを押して抜けます
仮想環境内でのプログラムの実行
基本的には仮想環境内のターミナルで実行することになります
ターミナルの起動は上のバーから、「表示」→「ターミナル」です
![](https://emoclework.jp/wp-content/uploads/2024/05/f498ba9a19e9-20240205.png)
このターミナルは仮想環境内のターミナルなので、ここでプログラムを実行すれば良いです
試しに、python test.py
と入力すれば、test.pyが実行されます
![](https://emoclework.jp/wp-content/uploads/2024/05/927259422652-20240205.png)
もしくは、タブの右側の方にある、三角形マークをおしても実行できます
![](https://emoclework.jp/wp-content/uploads/2024/05/8ad2289af585-20240205.png)
これで、仮想環境内でのプログラムの実行ができました
仮想環境上でのGitの操作
安全でない可能性がある等のメッセージが表示され、ソース管理のアイコンを押してもGitの差分管理が表示されないことがあります
![](https://emoclework.jp/wp-content/uploads/2024/05/d9fc71ae0dc1-20240205.png)
この場合は、Manage Unsafe Repositoriesを押すと、安全なレポジトリを選択してくれと、言われるので、選択すれば使えるようになります
![](https://emoclework.jp/wp-content/uploads/2024/05/28fa53b5b96b-20240205.png)
以上で、「Docker, WSL2, Git, VS Codeを使ってWindowsでpython開発環境構築」の話は終わりになります。