インターネット上には無関係な記事がたくさんあるので、この出版物を用意しました。基本的に、記事を書くとき、私はdockerドキュメントのdjango用にdockerを構成する例に依存しました。
ここでは、djangoフレームワークとmysqlデータベースのドッカーセットアップについて説明します。これらはコンテナーの外部に格納されるため、コンテナーで何かが発生することを心配する必要はありません。
このガイドの作成には、次のものが使用されました。
- ubuntu 20.04
- ドッカー03/19/12
- docker-compose 1.26.2
- python 3.8
- mysql 5.7
- django 3.1.1
- mysqlclient 2.0.1
- django-mysql 3.8.1
ワークスペースの設定
セットアップを開始する前に、ワークスペースを準備する必要があります。
- dockerとdocker-composeをインストールします。インストールプロセスの詳細は、dockerのドキュメントに記載されています。
- プロジェクトを配置するディレクトリ(この例では、project)を作成します。このディレクトリに、pythonイメージ(この例ではweb)を実行するための構成を格納する別のディレクトリを作成します。
./project
/web
これで準備が完了し、小さなプロジェクトの設定を開始できます。
Requirements.txt
Webディレクトリに、requirements.txtというファイルを作成します。
このファイルでは、djangoアプリケーションが機能するためのパッケージを宣言します。
/project/web/requirements.txt
Django==3.1.1
mysqlclient==2.0.1
django-mysql==3.8.1
ご覧のとおり、django自体と、mysqlデータベースと通信するためのパッケージがここに登録されています。
.
Dockerfile
web Dockerfile.
Dockerfile . .
:
/project/web/Dockerfile
FROM python:3.8
ENV PYTHONUNBUFFERED 1
RUN mkdir /web_django
WORKDIR /web_django
COPY requirements.txt /web_django/
RUN pip install --upgrade pip && pip install -r requirements.txt
ADD . /web_django/
python , , . web_django .
pip (--upgrade pip), .. , .
docker-compose.yml
docker-compose.yml.
. - . compose , Docker , , . , .
.
/project/docker-compose.yml
version: '3'
services:
web:
build: ./web
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/web_django
ports:
- '8000:8000'
depends_on:
- db
db:
image: mysql:5.7
ports:
- '3306:3306'
environment:
MYSQL_DATABASE: 'db_django'
MYSQL_USER: 'root'
MYSQL_PASSWORD: 'password'
MYSQL_ROOT_PASSWORD: 'password'
restart: always
volumes:
- ./db_django:/var/lib/mysql
web/Dockerfile . django 8000 . mysql.
mysql. : , , , ( , , ) , . , , , , mysql .
. django .
django
(project/) . django web_django.
sudo docker-compose run web django-admin startproject web_django .
:
drwxr-xr-x 6 root root 4,0K 16 21:49 db_django
-rw-rw-r-- 1 kafka kafka 466 16 21:31 docker-compose.yml
-rwxr-xr-x 1 root root 666 16 21:34 manage.py
drwxrwxr-x 2 kafka kafka 4,0K 16 21:31 web
drwxr-xr-x 3 root root 4,0K 16 21:34 web_django
, .. root .
sudo chown -R $USER:$USER web_django
パスweb_django / settings.pyにあるプロジェクトのdjango設定ファイルを開きます
。このファイルでは、docker -compose.ymlで指定したデータベース接続設定を置き換えます。
/project/web_django/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db_django',
'USER': 'root',
'PASSWORD': 'password',
'HOST': 'db',
'PORT': '3306',
}
}
これですべての準備が整い、docker-composeを実行できます。
プロジェクトの立ち上げ
コンテナを起動するには、このコマンドを実行するだけです
docker-compose up
コンテナをバックグラウンドで実行するには、追加の引数を指定する必要があります
docker-compose up -d
イメージを再構築するために、コマンドを実行できます
docker-compose build
データベースの移行
データベースを移行するには、次のコマンドを実行します。
docker-compose run web python manage.py makemigrations
docker-compose run web python manage.py migrate