本記事では、Docker上でPythonのプログラミングを実行できる環境を、VS Codeで構築する方法について紹介します。
本記事では環境構築のみの扱いですが、環境構築だけでなく『実際にPythonで開発してWEBアプリを公開する方法まで知りたい』という方は、下記のリンクをぜひご覧ください!
Docker ・ Python・VS Codeの特徴とメリット
まず、Python、Docker、VS Codeとは何か?それぞれの特徴とメリットについてご紹介していきます。
Pythonの特徴とメリット
Pythonとは、オープンソースで運営されているプログラミング言語です。Pythonのプログラミング言語としての主な特徴は、少ないコードで簡潔にプログラムを書けること、専門的なライブラリが豊富にあることなどが挙げられます。Pythonについては、下記の記事にて分かりやすく紹介されています。
Pythonをプログラミング言語として選択することで、以下のようなメリットがあります。
- 初心者でも比較的とっつきやすい
- DjangoやFlaskなどのフレームワークによって、簡単にWEBアプリのバックエンド開発が出来る
- 機械学習やAIを活用したアプリケーションの開発が出来る
Dockerの特徴とメリット
Dockerとは、Docker社が開発したコンテナ環境を構築できるプラットフォームです。コンテナとはOSに仮想的なユーザ空間を作成することで、この空間上で環境を構築しアプリケーションを作成、配布、実行することができます。詳細が知りたい方は、以下の記事が参考になるのでぜひご覧ください。
Dockerによりコンテナ環境を構築するメリットは、パッケージのインストールや、WEBサーバーとの接続設定をコード化することで、本番環境と同じ環境で開発環境をつくれることです。これによって、開発環境では動いたけれど、本番環境ではうまくいかないといった、環境によるリスクを軽減することができます。
VS Codeの特徴とメリット
VS Code(Visual Studio Code)とは、マイクロソフト社が開発したエディタと呼ばれるソフトウェアのひとつです。
通常、プログラミングによる開発はこのエディタと呼ばれる開発環境で実行していきます。
VS Codeの詳細は以下の記事が参考となります。
また、開発環境については、以下の記事が参考になるのでぜひご覧ください。
VS Codeをエディタとして使用することは、下記のメリットがあります。
- 入力候補を自動で表示してくれるので、サクサクとコーディング出来る
- 拡張機能が豊富
- OSのターミナルをエディタの中で操作できる
- デバック機能がある
必要なソフトウェアをインストールする
ここでは、Docker、VS Codeをインストールする方法についてそれぞれご紹介していきます。
Dockerをインストールする
Dockerでコンテナを作成するために、まずはDockerが実行できる環境をPCに構築します。まずは、下記の参考サイトと手順に沿ってDockerをインストールします。
さらに、Docker-composeをインストールします。Docker-Composeとは、複数のDockerコンテナを同時に立ち上げるためのツールです。今回はPythonのみのコンテナとなるのでインストール必須ではありませんが、後々アプリを作成することになった場合は、他のコンテナも使用する可能性が高くなるので、この機会に導入しましょう。Docker-composeは下記のサイトの手順でインストールできます。
VS Codeをインストールする
次に、VS Codeをインストールします。VS Codeは下記の記事を参考にして、ダウンロードとインストールを実施してください。
Python x Dockerの開発環境を構築する
VSCode上で開発環境を構築する設定をします。VS Codeの基本操作については、以下の記事が参考になるのでぜひご覧ください。
Python x Dockerの開発環境をVSCode上で構築する具体的な流れについては下記となります。
- 拡張機能をインストールする
- Pythonのコンテナを作成する
- リモートコンテナを立ち上げる
拡張機能をインストールする
VS Codeで必要となる拡張機能をインストールします。拡張機能は、エディタを開いた後で『Ctrl+Shift+x』によって拡張機能の検索画面を開くことが出来ます。最低限必須な拡張機能は下記となりますので、検索して全てインストールしてください。
- Docker (Dockerのための拡張機能)
- Remote-Containers (VS Code上で Dockerに入るための拡張機能)
- YAML (docker-compose.ymlファイルのための拡張機能)
また、必須ではないですが、下記記事の拡張機能のインストールもおすすめです。
【参考】VSCodeのおすすめ拡張機能と便利な設定、キーバインド集
Pythonのコンテナを作成する
まず、必要なフォルダとファイルを作成します。『docker』フォルダを作業ディレクトリとして、下記の構成で作成をします。
docker(フォルダ)
├── .devcontainer(フォルダ)
│ ├── devcontainer.json(ファイル)
│ └── docker-compose.yml(ファイル)
├── Python(フォルダ)
│ ├── sample.py(ファイル)
│ ├── Dockerfile(ファイル)
│ └── requirements.txt(ファイル)
└── docker-compose.yml(ファイル)
『docker』フォルダ直下の『docker-compose.yml』を下記のように記述して、『python』という名前のコンテナを起動する設定をします。
docker/docker-compose.yml
version: '3'
services:
python:
restart: always
build:
context: .
dockerfile: ./Python/Dockerfile
container_name: 'python'
working_dir: '/code'
tty: true
volumes:
- ./Python:/code
ymlファイルの中身については、以下の記事が参考になるのでぜひご覧ください。
次に、コンテナのイメージを作成する『Dockerfile』を下記のように記述します。
docker/Python/Dockerfile
FROM python:3
USER root
RUN apt-get update
RUN apt-get -y install locales && \
localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
RUN apt-get install -y vim less
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 mkdir -p /code
COPY ./Python/requirements.txt /code
WORKDIR /code
RUN pip install --upgrade pip
RUN pip install --upgrade setuptools
RUN pip install -r requirements.txt
DockerファイルやDockerのイメージについては、以下の記事が参考になるのでぜひご覧ください。
Pythonで使用するライブラリは、『requirements.txt』の中に記述して設定します。例えば、『requests』と『beautifulsoup4』をライブラリとしてインストールする場合は、下記のように記述します。
docker/Python/requirements.txt
requests
beautifulsoup4
次に、リモートコンテナでデバッグを実行するための設定ファイルを作成していきます。『.devcontainer』フォルダの中の、『devcontainer.json』と『docker-compose.yml』に対して、下記のように記述していきます。
docker/.devcontainer/devcontainer.json
{
"name": "Existing Docker Compose (Extend)",
"dockerComposeFile": [
"../docker-compose.yml",
"docker-compose.yml"
],
"service": "python",
"workspaceFolder": "/code",
"settings": {
"terminal.integrated.shell.linux": "/bin/bash"
},
"extensions": [
"ms-azuretools.vscode-docker",
"ms-python.python"
],
"shutdownAction": "stopCompose",
}
docker/.devcontainer/docker-compose.yml
version: '3'
services:
python:
volumes:
- .:/workspace:cached
command: /bin/sh -c "while sleep 1000; do :; done"
これで、環境構築に必要なファイルは作成完了です。Pythonのファイルは『Python』フォルダに作成していきます。今回は例として、『sample.py』を下記のように作成します。
docker/Python/sample.py
print('hello world 1')
print('hello world 2')
リモートコンテナを立ち上げる
VSCodeのターミナル(『Ctrl+Shiht+0』で開く)から、以下のコマンドを実行して、dockerイメージをビルドした後、Pythonコンテナを起動させます。
ターミナル
$ docker-compose build
$ docker-compose up -d
コンテナを起動させた後、VSCodeの画面左下にある下記画像のアイコンをクリックします。Remote-Containerのメニューから「Open Folder in Container…」を選択し、作業ディレクトリの「Docker」のフォルダを選択すると、「.devcontainer」での設定により、『python』コンテナの中に入ります。
コンテナに入った後で、『sample.py』を開くと、『F5』コマンドでデバッグ実行可能です。ここまでうまくいっていれば、ターミナルに以下が出力されます。
ターミナル
$ hello world 1
$ hello world 2
また、一時停止した表の左端をクリックしブレイクポイントを設定すると、以下画像のように設定した行で一時停止してデバッグできることを確認できます。またこの環境設定で、リモートコンテナ上で、pythonファイルを作成したり、更新したりすることも可能です。
さいごに
これで、Python x Dockerの開発環境をVS Codeで構築する方法についての説明を終わります。Dockerを用いたPythonの開発環境を活用して、開発を効率化していきましょう!
コメント