この記事の概要
Dockerを活用したプロジェクト運用の詳細解説
以下では、Dockerを使用してWindows 11 Proのローカル環境でプロジェクトを構築・運用する手順を詳細に解説し、設定の理由も説明します。
1. Dockerのインストールと環境設定
スポンサーリンク
1.1 Docker Desktopのインストール
- 手順:
- Docker公式サイトからインストーラをダウンロード。
- インストール中に「WSL 2」を有効にするオプションを選択。
- インストール完了後、Docker Desktopを起動。
- 理由:
Docker Desktopは、Windows環境でDockerを利用するための統合ツールです。WSL 2を使用することで、軽量で高速なLinux環境を提供します。これにより、コンテナがLinuxベースで動作するため、効率的かつ正確な開発環境が構築できます。
1.2 WSL 2の有効化
- コマンド:
PowerShellを管理者権限で開き、以下を実行:wsl --install wsl --set-default-version 2
- 理由:
WSL 2は、DockerのLinuxコンテナをWindows上で動作させるために必要です。WSL 2を利用することで、仮想マシンよりも軽量で高速な環境を実現できます。
1.3 動作確認
- コマンド:
docker --version
- 理由:
Dockerが正しくインストールされているかを確認するためです。
2. プロジェクトのフォルダ構成と役割
2.1 フォルダ構成の詳細
my-docker-project/
│
├── Dockerfile # Dockerイメージのビルド設定
├── docker-compose.yml # マルチコンテナ環境を簡単に管理
├── package.json # Node.js依存関係とメタ情報
├── package-lock.json # 依存関係のバージョン固定
├── app.js # アプリケーションのエントリポイント
│
├── .env # 環境変数を管理
├── .gitignore # Gitで無視するファイルやフォルダ
│
└── volumes/ # 永続データの保存(オプション)
└── logs/ # ログファイル保存用
2.2 各ファイルとその役割
(1) Dockerfile
場所: my-docker-project/Dockerfile
内容:
FROM node:14
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]
説明と理由:
- FROM node:14:
Node.js公式イメージをベースに使用。バージョン14は安定しており、多くのプロジェクトで採用されています。 - WORKDIR /usr/src/app:
コンテナ内の作業ディレクトリを設定。全ての操作がこのディレクトリ内で行われます。 - *COPY package.json ./**:
package.json
とpackage-lock.json
のみをコピーし、次のnpm install
を最適化します。 - RUN npm install:
必要な依存関係をインストール。 - COPY . .:
プロジェクト全体をコンテナにコピー。 - EXPOSE 3000:
コンテナが使用するポートをホストに公開。 - CMD [“node”, “app.js”]:
コンテナ起動時に実行するコマンドを指定。
(2) docker-compose.yml
場所: my-docker-project/docker-compose.yml
内容:
version: '3.8'
services:
app:
build: .
ports:
- "3000:3000"
volumes:
- .:/usr/src/app
environment:
NODE_ENV: development
説明と理由:
- version: ‘3.8’:
最新のDocker Composeバージョンを指定。 - services:
アプリケーションの各コンテナを定義。 - build: .:
Dockerfileを使ってイメージをビルド。 - ports:
ホストのポート3000をコンテナのポート3000にマッピング。 - volumes:
ホストとコンテナ間でファイルを共有し、コードの変更を即座に反映。 - environment:
環境変数を設定。開発・本番環境を簡単に切り替え可能。
(3) app.js
場所: my-docker-project/app.js
内容:
const express = require('express');
const app = express();
const PORT = process.env.PORT || 3000;
app.get('/', (req, res) => {
res.send('Hello, Docker!');
});
app.listen(PORT, () => {
console.log(`Server is running on http://localhost:${PORT}`);
});
説明と理由:
- Expressを使用したシンプルなWebサーバー。
- 環境変数
PORT
を使用し、柔軟にポートを設定可能。
(4) .envファイル
場所: my-docker-project/.env
内容:
NODE_ENV=development
PORT=3000
説明と理由:
- 環境変数を一元管理。本番環境に移行するときに設定を簡単に変更可能。
(5) .gitignoreファイル
場所: my-docker-project/.gitignore
内容:
node_modules/
.env
logs/
説明と理由:
node_modules/
や.env
はサイズが大きいかつ機密情報を含むため、Gitに含めない。
スポンサーリンク
3. 開発と実行手順
3.1 Dockerイメージのビルド
実行コマンド:
docker-compose build
理由:
プロジェクトのコードと依存関係からDockerイメージを作成します。
3.2 コンテナの起動
実行コマンド:
docker-compose up
理由:
プロジェクト全体を起動し、アプリケーションをテスト可能にします。
3.3 ログ確認
実行コマンド:
docker logs <container_id>
理由:
アプリケーションの動作状況やエラーメッセージを確認するため。
3.4 コンテナにアクセス
実行コマンド:
docker exec -it <container_id> bash
理由:
コンテナ内で直接操作・デバッグが可能。
3.5 コンテナの停止
実行コマンド:
docker-compose down
理由:
開発が完了した後、リソースを解放するため。
これで、Dockerを使ったプロジェクト運用手順の詳細な解説が完了です。次に具体的な課題があれば、さらに掘り下げて解説できます。