この記事について
この記事は、「Django + MySQLの環境構築を通じてDockerの使い方を学ぶ」に関連する記事群の Part.1 にあたります。
- venvを利用してPythonの仮想環境を構築する ( 当記事 )
- Dockerfileの記述を考える
- docker-compose.ymlの記述を考える
- 設定ファイルを編集し docker-compose up を実行する
- 依存関係にあるサービス間のコンテナ立ち上げタイミングを調整する
はじめに
この記事ではまず、venv
を利用してPython3
の仮想環境を構築します。
Pyenv
でホストPCに準備した任意のバージョンのPython3
を元に、特定のプロジェクト向けの仮想環境をvenv
で作成します。
目的は、プロジェクト単位でPython
のバージョンを管理できるようにすることと、pip
によるパッケージ群のインストールを 効率/軽量 化することです。
この記事では Python3.7.7
を利用します。
Pythonを準備する
# Python 3.7.7 のインストール
$ pyenv install 3.7.7
# 利用する Python3 のバージョンを 3.7.7 にする
$ pyenv global 3.7.7
# バージョン確認
$ python3 --version
Python 3.7.7
仮想環境の作成
プロジェクト用のディレクトリを作ってから、その中に仮想環境を作成します。
# プロジェクト用ディレクトリの作成
$ mkdir django_starter
# ディレクトリの移動
$ cd django_starter
# 仮想環境の作成
$ python3 -m venv .venv
コマンド末尾の.venv
はパス名です。ここでは慣例にそって.venv
としましたが、お好みでディレクトリをはさんで階層を深くしたり、好きな名前をつけたりしてももちろん大丈夫です。
続いて、仮想環境を有効化し、有効化を確認します。
# 有効化
$ source .venv/bin/activate
# 「 どこにある Python を使っている状態か 」 確認してみる
(.venv) $ which python
(略)/django_starter/.venv/bin/python
shellのユーザー名の前に先ほどつけた仮想環境名が表示されていれば、有効化されていることが確認できます。プロジェクト内に配置された仮想環境のパスに、このプロジェクトのためのPython3
が配置されていて、それを使っていく、というイメージで捉えています。ちなみに、
$ deactivate
と実行するだけで、仮想環境から出ることができます。
パッケージのインストール
仮想環境内のpip
を使って、必要なパッケージをインストールします。
この記事群の目的で使うことが確定しているものを、いくつか事前にインストールしておきます。
# インストール
(.venv) $ pip install django==3.0.8 mysqlclient==2.0.1 pathlib==1.0.1
# インストールされているパッケージの確認
(.venv) $ pip freeze
次に、これらを元にrequirements.txt
を作成します。
(.venv) $ pip freeze >> requirements.txt
中身はこんな感じになっているはずです。
asgiref==3.2.10
Django==3.0.8
mysqlclient==2.0.1
pathlib==1.0.1
pytz==2020.1
sqlparse==0.3.1
今後は、環境を共有する際やコンテナ内に環境をコピーする際、このファイル内の記述を元にインストールを行なっていくことになります。($ pip install -r requirements.txt
)
Djangoプロジェクトを作成する
次回からDocker
関連ファイルの設定を行なっていきますが、その前にDjango
のプロジェクトを作成しておきます。
(.venv) $ pwd
(略)/django_starter
(.venv) $ django-admin startproject config .
もちろんコマンドで生成するディレクトリの名前はなんでもいいのですが、個人的に親ディレクトリと同名だと混乱してしまうタイプなのでconfig
にしておきます。
.
は作成場所のパス指定です。
現時点でのディレクトリ構成
django_starter
├── config
│ ├── __init__.py
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── manage.py
├── .venv
│ └── (略)
└── requirements.txt
終わりに
仮想環境を利用することで、プロジェクトに関係のないパッケージのインストールを回避し、必要なものだけを管理できるようになります。同様に、このプロジェクトでしか使わないようなものがあっても、ローカルのメイン環境(?)を汚さずに済み、とてもいい感じです。
これを、続いて実践に入るコンテナ内の環境構築に利用します。
次の記事では、Dockerfileの記述について考えていきます。
続きはこちら↓
「 2. Dockerfileの記述を考える 」
ご覧いただきありがとうございました。