1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Docker】開発用コンテナとアプリケーションコンテナの違いと役割整理

Posted at

はじめに

開発をDocker上で行う際、
「開発用コンテナ」と「アプリケーション用コンテナ」をきちんと分けて管理する設計がとても重要です。
本記事では、両者の違いや役割について整理し、実際に遭遇しやすい問題とその対処法も紹介します。


1. 開発用コンテナとは

開発用コンテナとは、
エディタやターミナル、ビルドツールなど開発に必要なツール群をまとめたコンテナです。

具体例

  • VSCode Server
  • Node.js, Python, Javaなどの開発言語
  • Docker CLI(場合によって)
  • Make, Git, curl などのCLIツール

開発用コンテナの目的

  • ホスト環境を汚さずに開発を進める
  • 誰が開発しても同じ環境を再現できる
  • 開発用ライブラリと実際のアプリ実行環境を分離する

イメージ

🐳 開発用コンテナ(devenv)
├── VSCodeやターミナルが動く
└── 開発ライブラリがインストールされている

2. アプリケーション用コンテナとは

アプリケーション用コンテナとは、
実際にサービスを提供するために動かすアプリケーション専用のコンテナです。

具体例

  • フロントエンド(例:React / Vite)
  • バックエンド(例:FastAPI / Node.js API)
  • AI推論サーバー(例:AI関係 APIサーバー)

アプリケーションコンテナの目的

  • サービスを本番同様の形で起動する
  • アプリケーション単体で独立して動かせるようにする
  • 最小限必要なライブラリだけを入れ、セキュアかつ軽量に保つ

イメージ

🐳 フロントエンドアプリケーション
🐳 バックエンドAPIサーバー
🐳 AI推論サーバー
(それぞれが独立して起動)

3. よくある質問:「開発用コンテナの中でさらにDocker buildしたい」

問題

開発用コンテナ(devenv)内では通常、
Dockerエンジンがインストールされていないため、docker build ができない
という問題に直面します。

原因

  • コンテナの中にDocker自体が入っていない
  • DockerはホストOS上で動く「デーモン型サービス」だから

解決策

方法 解説
ホスト側で直接 docker build する 最もシンプルで安全な方法
docker.sockをマウントしてコンテナ内からdockerコマンドを叩けるようにする 上級者向け(セキュリティリスクあり)

例:ホスト側でbuildするパターン

cd frontend/
docker build -t my-frontend-app .
docker run -d -p 5173:5173 my-frontend-app

これで開発用コンテナはあくまで「作業場」に徹し、
アプリケーションコンテナは独立して起動できます。


4. 環境変数エラーと .env ファイルの重要性

Docker Composeを使う際によく出るエラー例:

WARN The "POSTGRES_USER" variable is not set. Defaulting to a blank string.
env file .env not found

原因

  • .env ファイルが存在しない
  • docker-compose.yml 内で POSTGRES_USER 等の環境変数を参照している

対応策

  1. プロジェクトディレクトリ直下に .env を作成
  2. 必要な環境変数を記述する

例:最低限必要な.env

POSTGRES_USER=example_user
POSTGRES_PASSWORD=example_password
POSTGRES_DB=example_db
POSTGRES_HOST=db
POSTGRES_PORT=5432

これでdocker-compose起動時のエラーは解消します。


5. 現実的な進め方

開発スピード重視なら一旦ホストを汚してもOK。

  • プロジェクト完成を優先
  • 最後にまとめて環境掃除する(Dockerイメージ・コンテナの整理)

Docker環境の掃除コマンド(あとで使える)

# 未使用コンテナ削除
docker container prune

# 未使用イメージ削除
docker image prune

# 未使用ボリューム削除
docker volume prune

まとめ

項目 ポイント
開発用コンテナとは? エディタやビルドツールをまとめた作業場
アプリ用コンテナとは? サービス提供するためのアプリ本体
docker buildはどこで? 基本はホスト側
環境変数管理は? .envファイルで統一
進め方のコツ 汚れは気にせず、まずはPJT完成を最優先!

🚀 おわりに

開発用コンテナとアプリケーションコンテナをきちんと分けて考えるだけで、

  • 環境管理
  • チーム開発
  • 本番リリース後のトラブル防止

すべてがスムーズになります。

最初は手間でも、後々圧倒的に楽になるので、ぜひ意識して運用していきましょう!


✏️ この記事は、これまでの実践経験をもとにまとめました。
もしこの記事が役に立ったら、いいねやフォローもぜひお願いします!🚀

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?