LoginSignup
3
1

Django × MySQL × Dockerでチュートリアルをしてみる

Last updated at Posted at 2024-01-20

はじめに

友人とこれからのアプリ開発について話したり、ハッカソンでオススメを聞いたり、ネットに転がっている教材をみて...
Django
に決定されたので、環境構築をしてチュートリアルをしてみようと思います。

参考にしたURL

本記事の前提条件

  • windows10
  • Dockerインストール済み
  • VScode

さっそく環境構築

0 - 環境構築したいフォルダをVScodeで開く
1 - Dockerfile requirements.txt docker-compose.ymlを作成する
2 - Dockerfileを編集する

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

3 - requirements.txtを編集する

Django>=3.0,<4.0
psycopg2
mysqlclient

4 - docker-compose.ymlを編集する

version: '3'

services:
  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_USER: 'django'
      MYSQL_PASSWORD: 'django'
      MYSQL_DATABASE: 'django'
    ports:
      - 3306:3306
    volumes:
      - mysql:/var/lib/mysql
  web:
    build: .
    command: python3 manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    links:
      - db

volumes:
  mysql:
    driver: local

5 - imageをbuildする

VScode上で Ctrl + @ を押し、ターミナルを開きます

docker compose build

6 - コンテナを定義する

docker compose run web django-admin.py startproject <プロジェクトの名前> .

7 - コンテナを起動する

docker compose up

VScodeの ターミナル にある+ボタンを押して新しくターミナルを作る
一度、以下のコマンドでコンテナを閉じる

docker compose down

8 - setteings.pyをMySQLの設定に変更する

以下のように変更

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django',
        'USER': 'django',
        'PASSWORD': 'django',
        'HOST': 'db',
        'PORT': 3306,
    }
}

9 - データベースをマイグレーションする

VScodeの ターミナル にある+ボタンを押して新しくターミナルを作り以下を入力する

docker-compose exec web python manage.py migrate

10 - 再度imageをbuildし、コンテナを立ち上げる

VScode上で Ctrl + @ を押し、ターミナルを開きます

docker compose build
docker compose up

last.PNG

Djangoのチュートリアルをしてみる

ここからはこちらに入る

0 - Pollsフォルダを作る

現状の立ち上がっているコンテナを確認する

docker container ls
実行結果
CONTAINER ID   IMAGE                     COMMAND        
           CREATED          STATUS          PORTS
NAMES
c4adc638d485   docker-django-mysql-web   "python3 manage.py r…"   58 minutes ago   Up 58 minutes   0.0.0.0:8000->8000/tcp              docker-django-mysql-web-1

949ac86dac2d   mysql:5.7                 "docker-entrypoint.s…"   59 minutes ago   Up 59 minutes   0.0.0.0:3306->3306/tcp, 33060/tcp   docker-django-mysql-db-1 

1 - コマンドを実行する時

私の場合はdocker-django-mysql-web-1にDjangoが入っているので、こちらのコンテナにアクセスし、pollsフォルダを作成する

今回は、pollsフォルダを作成していますが、それ以外のコマンドを実行する時も、コンテナに入ってから実行してください

docker exec -it docker-django-mysql-web-1 /bin/bash

root@c4adc638d485:/code# python manage.py startapp polls

root@c4adc638d485:/code# exit
exit

ここからはチュートリアルに従ってください。

開いているチュートリアルのページが終わったら次は、こちらからチュートリアルを続けてください

https://docs.djangoproject.com/ja/5.0/intro/tutorial02/#creating-models

チュートリアルでは、mysite/settings.pyなどがありますが、
6 - コンテナを定義する
ここで設定したプロジェクトの名前が当たっており<プロジェクトの名前>/settings.pyになっていると思います

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1