Webアプリケーション開発のPF制作の為
その土台となる環境構築をやりましたので投稿します。
既に何人もの人が記事を投稿しているとは思いますが
忘れないために投稿します。
概要
Dockerのコンテナ技術を用いて、DjangoとMySQLを起動させます。
初心者が入門書と公式ドキュメント、その他ネット記事を読んで完成させました。
抜けている部分や間違っている部分があるかもしれません。
もし間違っている部分がありましたら、コメントいただけますと幸いです。
躓いた所はなるべく書いていきます。
筆者環境とスタート地点
・windows10 Home
・WSL2導入済
・Docker導入済
・VisualStudioCode導入済(主にこちらのターミナル上で操作しています)
上記にも書いた通りDockerの導入部分は省略し
dockerが使えるという状態からのスタートです。
手順
1.空のディレクトリを用意し、その中に3つのファイルを作成。
ディレクトリ(任意の名前)
├─Dockerfile
├─requirements.txt
└─compose.yaml
こんな感じです。とりあえずなのでデスクトップ上に作成しました。
それぞれ中身をVScodeで書いていきます。
・Dockerfile
FROM python:3.10
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code
RUN pip install -r requirements.txt
COPY . /code/
Dockerfileはイメージを作成するものです。
このイメージを元にコンテナが作られます。
ちなみにちゃんと「Dockerfile」と書かないと手順2でエラーくらいます。
・requirements.txt
Django
mysqlclient
DjangoとMySQLをインストールしてね!と上記テキストファイルに書きます。
ちなみにバージョンは指定しなくてもいけます。
・compose.yaml
version: "3"
services:
web:
container_name: "任意の名前"
build: .
command: python manage.py runserver 0.0.0.0:8000
working_dir: /code
ports:
- 8000:8000
volumes:
- .:/code
depends_on:
- db
db:
container_name: "任意の名前(上記の任意の名前とは被らないように)"
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: 任意のパスワード
MYSQL_DATABASE: 任意のデータベース名
MYSQL_USER: 任意のユーザー名
MYSQL_PASSWORD: 任意のパスワード
command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
volumes:
db-data:
複数のコンテナを作成するときに使うのがこのcomposeファイルです。
任意の部分は、わかりやすい文字にしときましょう。
2.Djangoプロジェクトの作成
djangoのプロジェクトを作成します。
ターミナル内で、実行するディレクトリまで移動した上で
docker compose run --rm web django-admin startproject (プロジェクト名) .
プロジェクト名は任意の名前で大丈夫です。
入力しエンターを押すと、ディレクトリ内にプロジェクトが作成されます。
ディレクトリ(任意の名前)
├─プロジェクトフォルダ(プロジェクト名)
│ ├─__init__.py
│ ├─asgi.py
│ ├─settings.py
│ ├─urls.py
│ └─wsgi.py
├─Dockerfile
├─requirements.txt
├─compose.yaml
└─manage.py
プロジェクトフォルダに4つのファイルとその上の階層でmanage.pyが作られました。
3.settings.pyの書き換え
DjangoではDBのデフォルトがsqLiteに設定してあるので、
こちらをMySQLへ変えましょう。
settings.py内のテキストをVScodeで開きます↓
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
この部分をcompose.yamlで設定したNAMEやUSERで追記、書き換えしていきます。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': '名前',
'USER':'名前',
'PASSWORD':'パスワード',
'HOST':'db',
'PORT':'3306'
}
}
4.ターミナルでcomposeコマンドを実行
最後のコマンドです。
docker-compose up -d
実行が始まり完了!
そして
http://127.0.0.1:8000/
へアクセスすると
無事動いていることが確認できました。
まとめ
・最初は任意の名前を設定する部分すら不明だった
・1つ進んでは1つ止まって、という作業をひたすらしていた(打ち間違いミスですぐ止まります)
・失敗しても大丈夫や!精神で何度か失敗してやり直しを繰り返すうちに成功できます
多分漏れている部分もありますがこんな感じです。
ここからアプリを作ることができるはずです。
参考
書籍「Docker&仮想サーバー完全入門」
読んでいただきありがとうございました。
PF作成編も徐々に投稿していきます。