mysqlでdjangoのdockerを設定する

インターネット上には無関係な記事がたくさんあるので、この出版物を用意しました。基本的に、記事を書くとき、私は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


ワークスペースの設定



セットアップを開始する前に、ワークスペースを準備する必要があります。



  1. dockerdocker-composeをインストールしますインストールプロセスの詳細は、dockerのドキュメントに記載されています。
  2. プロジェクトを配置するディレクトリ(この例では、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



All Articles