【初心者向け】Python x Dockerの開発環境をVS Codeで構築

【初心者向け】 Python x Dockerの 開発環境をVS Codeで構築のアイキャッチ プログラミング

本記事では、Docker上でPythonのプログラミングを実行できる環境を、VS Codeで構築する方法について紹介します。

本記事では環境構築のみの扱いですが、環境構築だけでなく『実際にPythonで開発してWEBアプリを公開する方法まで知りたい』という方は、下記のリンクをぜひご覧ください!

【初心者向け】WEBアプリ作成して公開する方法(Django + Nginx + MySQL + docker + AWS)
このプランによって、Django x Nginx x mysqlのWEBアプリをdockerコンテナ環境でイチから作成し、AWSにてインターネットに公開することが出来るようになります。このプランは、初心者・独学でもWEBアプリの作成・公開ま...

Docker ・ Python・VS Codeの特徴とメリット

まず、Python、Docker、VS Codeとは何か?それぞれの特徴とメリットについてご紹介していきます。

Pythonの特徴とメリット

Pythonとは、オープンソースで運営されているプログラミング言語です。Pythonのプログラミング言語としての主な特徴は、少ないコードで簡潔にプログラムを書けること、専門的なライブラリが豊富にあることなどが挙げられます。Pythonについては、下記の記事にて分かりやすく紹介されています。

Pythonとは?大人気プログラミング言語のメリットや活用事例をご紹介
「Python (パイソン)」は、今最も注目を集めているプログラミング言語です。その特長として、人工知能(機械学習や深層学習)などの最先端分野の開発にも使われている一方、文法が平易なため、プログラミング初心者の方でも大規模なWebアプリケー...

Pythonをプログラミング言語として選択することで、以下のようなメリットがあります。

  • 初心者でも比較的とっつきやすい
  • DjangoやFlaskなどのフレームワークによって、簡単にWEBアプリのバックエンド開発が出来る
  • 機械学習やAIを活用したアプリケーションの開発が出来る

Dockerの特徴とメリット

Dockerとは、Docker社が開発したコンテナ環境を構築できるプラットフォームです。コンテナとはOSに仮想的なユーザ空間を作成することで、この空間上で環境を構築しアプリケーションを作成、配布、実行することができます。詳細が知りたい方は、以下の記事が参考になるのでぜひご覧ください。

Dockerとは?~コンテナ・Kubernetesとの関係性~ | VMware Cloud Frontier by Networld
Dockerとは?~コンテナ・Kubernetesとの関係性~ 多くの企業がDX推進に注力する中で、Dockerを中心としたコンテナ活用への注目度が高まってきました。さらに、コンテナを管理するKubernetesにより、より複雑な環境の管理

Dockerによりコンテナ環境を構築するメリットは、パッケージのインストールや、WEBサーバーとの接続設定をコード化することで、本番環境と同じ環境で開発環境をつくれることです。これによって、開発環境では動いたけれど、本番環境ではうまくいかないといった、環境によるリスクを軽減することができます。

VS Codeの特徴とメリット

VS Code(Visual Studio Code)とは、マイクロソフト社が開発したエディタと呼ばれるソフトウェアのひとつです。
通常、プログラミングによる開発はこのエディタと呼ばれる開発環境で実行していきます。

VS Codeの詳細は以下の記事が参考となります。

Visual Studio Codeとは?インストールや使い方も現役エンジニアが解説 | TechAcademyマガジン
初心者向けにVisual Studio Codeについて解説しています。これはMicrosoft社が提供するコードエディタです。Visual Studio Codeの特徴とメリット、導入と設定の手順、拡張機能の一部を紹介します。エディタ検討...

また、開発環境については、以下の記事が参考になるのでぜひご覧ください。

開発環境とは - IT用語辞典
開発環境とは、機器やソフトウェア、システムを開発するために必要な機材やソフトウェアなどの組み合わせ。また、それらを組み合わせて構成された、開発者の作業環境。開発対象により含まれるものは千差万別だが、例えばソフトウェア開発なら、作業に用いるパ...

VS Codeをエディタとして使用することは、下記のメリットがあります。

  • 入力候補を自動で表示してくれるので、サクサクとコーディング出来る
  • 拡張機能が豊富
  • OSのターミナルをエディタの中で操作できる
  • デバック機能がある

必要なソフトウェアをインストールする

ここでは、Docker、VS Codeをインストールする方法についてそれぞれご紹介していきます。

Dockerをインストールする

Dockerでコンテナを作成するために、まずはDockerが実行できる環境をPCに構築します。まずは、下記の参考サイトと手順に沿ってDockerをインストールします。

Docker のインストール手順 - Qiita
DockerDocker のインストール方法や内容が各環境で異なるので、インストールのみに絞った記事をまとめた。各 OS 環境ではすべてパッケージ管理ソフトを利用してコンソールからインストールす…

さらに、Docker-composeをインストールします。Docker-Composeとは、複数のDockerコンテナを同時に立ち上げるためのツールです。今回はPythonのみのコンテナとなるのでインストール必須ではありませんが、後々アプリを作成することになった場合は、他のコンテナも使用する可能性が高くなるので、この機会に導入しましょう。Docker-composeは下記のサイトの手順でインストールできます。

Docker Compose のインストール
Docker Compose のインストール方法。

VS Codeをインストールする

次に、VS Codeをインストールします。VS Codeは下記の記事を参考にして、ダウンロードとインストールを実施してください。

Visual Studio Codeのダウンロードとインストール
Visual Studio Code のダウンロードと Windows 環境へのインストール方法について解説します。

Python x Dockerの開発環境を構築する

VSCode上で開発環境を構築する設定をします。VS Codeの基本操作については、以下の記事が参考になるのでぜひご覧ください。

VSCodeの基本操作

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ファイルの中身については、以下の記事が参考になるのでぜひご覧ください。

Docker Compose - docker-compose.yml リファレンス - Qiita
Docker Compose - docker-compose.yml リファレンス原文:Compose file version 3 reference…

次に、コンテナのイメージを作成する『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のイメージについては、以下の記事が参考になるのでぜひご覧ください。

Docker Compose - docker-compose.yml リファレンス - Qiita
Docker Compose - docker-compose.yml リファレンス原文:Compose file version 3 reference…
Dockerイメージとコンテナの違いとは?作成の流れ入門
Dockerは、代表的なコンテナ仮想化ソリューションです。Dockerイメージを用いたコンテナ仮想化システムを構築できます。ここでは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』コンテナの中に入ります。

VS Codeでリモートコンテナを開く

コンテナに入った後で、『sample.py』を開くと、『F5』コマンドでデバッグ実行可能です。ここまでうまくいっていれば、ターミナルに以下が出力されます。

ターミナル
$ hello world 1
$ hello world 2

また、一時停止した表の左端をクリックしブレイクポイントを設定すると、以下画像のように設定した行で一時停止してデバッグできることを確認できます。またこの環境設定で、リモートコンテナ上で、pythonファイルを作成したり、更新したりすることも可能です。

VS Codeのデバッグ画面

さいごに

これで、Python x Dockerの開発環境をVS Codeで構築する方法についての説明を終わります。Dockerを用いたPythonの開発環境を活用して、開発を効率化していきましょう!

コメント

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