ReactとDjangoのDocker環境を作る
本記事についての注意
フロントエンド側(React側)
ルートディレクトリにフォルダ作成
まず最初にフォルダ・ファイルの作成から始めます。
プロジェクトフォルダを作成して、その直下で下記のコマンドを打ちます。
$ mkdir frontend_Project
$ mkdir frontend_Project/frontend
$ mkdir -p frontend_Project/docker/node
$ touch frontend_Project/docker/node/Dockerfile
$ touch frontend_Project/docker-compose.yml
フォルダ・ファイル構成
作成した結果、下記のようなフォルダ・ファイル構成になりました。
Reactのプロジェクトはfrontend_Projectフォルダに配置します。
tree
.
└── frontend_Project
├── docker
│ └── node
│ └── Dockerfile
├── docker-compose.yml
└── frontend
Dockerfileについて
node/Dockerfileファイルに下記の内容を記載する。
FROM node:16-alpine
WORKDIR /usr/src/app
frontend_Project/docker-compose.ymlについて
frontend_Project/docker-compose.ymlファイルに下記の内容を記載する。
version: '3.9'
services:
node:
build: ./docker/node
volumes:
- ./node:/usr/src/app:cached
command: sh -c "cd react-sample && yarn start"
ports:
- "3000:3000"
Dockerイメージ作成
Dockerイメージ作成の前に現在の作業ディレクトリの確認、
作業ディレクトリ(カレントディレクトリ)にdocker-compose.ymlファイルが存在しているか確認する。
$ pwd
$ ls -l
docker-compose.ymlファイルが存在していることが確認できたら下記コマンドを実行。
$ docker-compose build --no-cache
プロジェクトを作成
プロジェクトの名前をreact-sampleにしています。
カレントディレクトリがfrontend_Projectであることを確認後、下記コマンドを実行
$ docker-compose run --rm node sh -c "npm install -g create-react-app && create-react-app react-sample"
コマンド実行後、nodeフォルダの中にプロジェクトが作成されています。
コンテナ立ち上げ
カレントディレクトリがfrontend_Projectであることを確認後、下記コマンドを実行
$ docker-compose up -d
上記のコマンドを実行後、ブラウザにてlocalhost:3000へアクセスするとReactが立ち上がっているのが確認できます。
バックエンド側(Django側)
ルートディレクトリにフォルダ作成
まず最初にフォルダ・ファイルの作成から始めます。
プロジェクトフォルダを作成して、その直下で下記のコマンドを打ちます。
$ mkdir backend_Project
$ mkdir backend_Project/backend
$ mkdir -p backend_Project/docker/python
$ touch backend_Project/docker/python/Dockerfile
$ touch backend_Project/docker-compose.yml
$ touch backend_Project/requirements.txt
フォルダ・ファイル構成
作成した結果、下記のようなフォルダ・ファイル構成になりました。
Djangoのプロジェクトはbackend_Projectフォルダに配置します。
tree
.
└── backend_Project
├── backend
├── docker
│ └── python
│ └── Dockerfile
├── docker-compose.yml
└── requirements.txt
Dockerfileについて
python/Dockerfileファイルに下記の内容を記載する。
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /backend
WORKDIR /backend
ADD requirements.txt /backend/
RUN pip install -r requirements.txt
ADD . /backend/
backend_Project/docker-compose.ymlについて
backend_Project/docker-compose.ymlファイルに下記の内容を記載する。
version: '3'
services:
backend:
build:
context: .
dockerfile: ./docker/python/Dockerfile
volumes:
- ./backend:/backend
command: python3 manage.py runserver 0.0.0.0:8000
ports:
- "8000:8000"
tty: true
requirements.txtについて
Pythonのパッケージでインストールしたいものはこのファイルに記載します。
バージョン3をインストールしたかったため、Django<4と記載しています。
Django<4
Dockerイメージ作成
Dockerイメージ作成の前に現在の作業ディレクトリの確認、
作業ディレクトリ(カレントディレクトリ)にdocker-compose.ymlファイルが存在しているか確認する。
$ pwd
$ ls -l
docker-compose.ymlファイルが存在していることが確認できたら下記コマンドを実行。
$ docker-compose build --no-cache
プロジェクトを作成
プロジェクトの名前をdjango_sampleにしています。
カレントディレクトリがbackend_Projectであることを確認後、下記コマンドを実行
$ docker-compose run backend django-admin startproject django_sample .
コマンド実行後、backendフォルダの中にプロジェクトが作成されています。
コンテナ立ち上げ
カレントディレクトリがbackend_Projectであることを確認後、下記コマンドを実行
$ docker-compose up -d
ブラウザでlocalhost:8000へアクセスするとDjangoが立ち上がっているのが確認できます。
Docker Desktopにてコンテナを確認
Docker Desktopにて下記のようにコンテナが2つ作成される。
データベース設定について
Djangoのデータベースのデフォルトの設定は、SQLite3です。
これは、 SQLite3 が Python に標準で組み込まれているため、
データベースをサポートするために何も追加でインストールする必要がないからです。
ですが、大規模なデータベースの場合、SQLite3は向いていません。
データベースがの規模が大きくなり、複雑化してくると、
MySQLに変更したくなることもあるでしょう。
その場合、こちらDjango SQLite3からMySQLへの移行を参考にしてみてください。
Discussion