Docker Compose × アプリ開発入門|Node.js・Pythonをコンテナで動かす


はじめに

Docker Composeを学んだ次のステップとして多くの人が知りたいのが、
「実際のアプリケーションをどうやって動かすのか?」 という点です。

本記事では、Docker Composeを使って Node.js / Python アプリを起動する方法を、
初心者でも再現できる ハンズオン形式 で解説します。

本記事で学べること

  • Docker Composeでアプリを起動する基本構成
  • Node.js / Pythonアプリのコンテナ化
  • ソースコードをリアルタイム反映する開発環境構築

Docker Compose × アプリ構成とは?

一般的なWebアプリ構成は以下のようになります。

  • アプリ(Node.js / Python)
  • Webサーバー(Nginx)
  • データベース(MySQLなど)

Docker Composeを使うことで、これらを 1つの設定ファイルでまとめて管理できます。


Docker Composeでアプリを動かすメリット

Docker Composeでアプリを動かす主なメリットは以下です。

  • 開発環境を即座に再現できる
  • チームで同一環境を共有できる
  • ホスト環境に依存しない
  • 本番環境への移行がしやすい

特に Node.js / Python初心者 にとって、「環境構築で詰まらない」点は大きな利点です。


【ハンズオン①】Docker Compose × Node.js アプリ

構成イメージ

  • Node.js(Express)
  • Docker Compose

① プロジェクト構成

node-compose-sample/
├─ docker-compose.yml
└─ app/
   ├─ Dockerfile
   ├─ package.json
   └─ index.js

② Node.jsアプリを作成

app/index.js

const express = require("express");
const app = express();

app.get("/", (req, res) => {
  res.send("Hello Docker Compose with Node.js!");
});

app.listen(3000, () => {
  console.log("Server running on port 3000");
});

③ package.json

{
  "name": "node-compose-sample",
  "version": "1.0.0",
  "main": "index.js",
  "dependencies": {
    "express": "^4.19.2"
  }
}

④ Dockerfile(Node.js)

FROM node:20-alpine
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["node", "index.js"]

⑤ docker-compose.yml

version: "3.9"

services:
  app:
    build: ./app
    ports:
      - "3000:3000"
    volumes:
      - ./app:/app
      - /app/node_modules

⑥ 起動

docker compose up --build

⑦ 動作確認

ブラウザで以下にアクセスします。

http://localhost:3000

表示されれば成功です 🎉


【ハンズオン②】Docker Compose × Python アプリ

構成イメージ

  • Python(Flask)
  • Docker Compose

① プロジェクト構成

python-compose-sample/
├─ docker-compose.yml
└─ app/
   ├─ Dockerfile
   ├─ requirements.txt
   └─ app.py

② Pythonアプリを作成

app/app.py

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
    return "Hello Docker Compose with Python!"

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

③ requirements.txt

flask==3.0.2

④ Dockerfile(Python)

FROM python:3.12-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]

⑤ docker-compose.yml

version: "3.9"

services:
  app:
    build: ./app
    ports:
      - "5000:5000"
    volumes:
      - ./app:/app

⑥ 起動

docker compose up --build

⑦ 動作確認

http://localhost:5000

Node.js / Python 共通でよく使う設定

volumes(開発効率UP)

volumes:
  - ./app:/app

コード変更が即反映されます。


よくあるエラーと対処法

ポート競合

docker compose ps

使用ポートを変更することで解決します。


Docker Compose × アプリが活躍する場面

  • ローカル開発環境
  • 技術ブログの検証環境
  • チーム開発
  • 本番環境構築の前段階

まとめ

Docker Composeを使えば、

  • Node.js / Pythonアプリを簡単にコンテナ化できる
  • 環境構築に悩まなくなる
  • 開発スピードが大幅に向上する

Docker Compose × アプリ開発は、モダンな開発環境の基本です。


投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です