3.1 フロントエンド(ReactJS)のDockerfileの作成
この段階では、ReactJSのフロントエンド、Python(Flask)のバックエンド、PostgreSQLデータベースを含むマルチコンテナアプリケーションの各サービス用のDockerfileを作成するよ。Dockerfileは各サービス用のDockerイメージを作成するための指示を定義するんだ。
frontendディレクトリにDockerfileを作成しよう:
ターミナル
cd frontend
touch Dockerfile
フロントエンド用Dockerfileの内容:
ターミナル
# ベースイメージとしてnodeを使用
FROM node:14
# 作業ディレクトリを設定
WORKDIR /app
# package.jsonとpackage-lock.jsonをコピーして依存関係をインストール
COPY package*.json ./
# 依存関係をインストール
RUN npm install
# プロジェクトの他のファイルをコピー
COPY . .
# ポート3000を設定
EXPOSE 3000
# アプリを起動
CMD ["npm", "start"]
このDockerfileは次の手順を実行するよ:
- ベースイメージとして
node:14
を使用。 - 作業ディレクトリ
/app
を設定。 package.json
とpackage-lock.json
をコピー。npm install
で依存関係をインストール。- プロジェクトのすべてのファイルを作業ディレクトリにコピー。
- アプリにアクセスできるようにポート
3000
を開く。 npm start
を使ってアプリを起動。
3.2 バックエンド(Flask)用Dockerfileの作成
バックエンドディレクトリにDockerfileを作成してね:
ターミナル
cd backend
touch Dockerfile
バックエンド用Dockerfileの内容:
dockerfile
# ベースイメージとしてpythonを使用
FROM python:3.12
# 作業ディレクトリを設定
WORKDIR /app
# requirements.txtをコピーして依存関係をインストール
COPY requirements.txt ./
# 依存関係をインストール
RUN pip install --no-cache-dir -r requirements.txt
# 他のプロジェクトファイルをコピー
COPY . .
# ポート5000を指定
EXPOSE 5000
# アプリを起動
CMD ["python", "run.py"]
このDockerfileは以下の手順を実行するよ:
- ベースイメージ
python:3.12
を使用。 - 作業ディレクトリ
/app
を設定。 requirements.txt
ファイルをコピー。pip install
を使って依存関係をインストール。- すべてのプロジェクトファイルを作業ディレクトリにコピー。
- アプリにアクセスするためのポート
5000
を開放。 python run.py
を使ってアプリを起動。
3.3 データベース用Dockerfile(PostgreSQL)の作成
データベースPostgreSQLの場合、公式のイメージを使用するので、独自のDockerfileを作成する必要はありません。その代わりに、docker-compose.yml
でPostgreSQLを設定します。
3.4 Dockerイメージのビルドとテスト
フロントエンドとバックエンド用のDockerfileを作成した後、それらのビルドをテストすることが重要だね。
フロントエンド用Dockerイメージのビルド:
Terminal
cd frontend
docker build -t task_management_frontend .
バックエンド用Dockerイメージのビルド:
Terminal
cd ../backend
docker build -t task_management_backend .
コンテナの動作確認:
フロントエンド用コンテナの起動:
Terminal
docker run -p 3000:3000 task_management_frontend
バックエンド用コンテナの起動:
Terminal
docker run -p 5000:5000 task_management_backend
フロントエンドの動作確認はhttp://localhost:3000、バックエンドの動作確認はhttp://localhost:5000をチェックしてみよう。
GO TO FULL VERSION