Docker開発とローカル開発の違い
Dockerでの開発と、ローカル開発の違いはなんだろう。。
ローカルで開発するとは
開発者のマシン上に直接開発環境を構築し、アプリケーションを実行すること。
必要なソフトウェアや依存関係を開発者のマシンにインストールすることが必要となってくる。
ローカル開発の特徴
- 直接インストール:
- 必要なソフトウェア(例: Node.js、Python、データベースなど)を開発者のマシンに直接インストールする。
- 環境の一貫性:
- 開発者ごとに環境が異なる可能性があり、環境の違いによる問題が発生することがある。
- パフォーマンス:
- ローカルマシンのリソースを直接使用するため、パフォーマンスが高い場合がある。
Dockerで開発するとは
Docker開発では、開発環境をコンテナ内に設定し、アプリケーションをそのコンテナ内で実行する。
開発環境を一貫して設定し、チーム全体で同じ環境を共有することができる。
Dockerでの開発の特徴
- コンテナ化:
- アプリケーションとその依存関係をコンテナ内にパッケージ化し、どこでも一貫して動作する環境を提供できる。
- 環境の一貫性:
- コンテナを使用することで、開発者全員が同じ環境を使用できるため、環境の違いによる問題が減少する。
- ポータビリティ:
- コンテナはどこでも動作するため、開発環境を簡単に移行できる。
- 分離:
- 各プロジェクトが独立した環境で動作するため、依存関係の競合を避けることができる。
両者の違い
特徴 | ローカル開発 | Docker開発 |
---|---|---|
環境設定 | 開発者ごとに異なる | 一貫した環境 |
依存関係の管理 | 手動で管理 | Dockerfileで管理 |
環境の移行 | 手動で設定が必要 | コンテナを移行 |
パフォーマンス | 高い場合がある | コンテナのオーバーヘッドがある場合がある |
分離 | 難しい場合がある | 簡単に分離可能 |
それぞれメリット、デメリットがある。。
TIP
開発者のニーズに最適な開発環境を選択することで、効率的に開発を進めることができる!
疑問点
今までローカル開発のみだったので、細かいところで理解できないところが多々でてきた。。
Q1:Docker環境で、フロントエンドからバックエンドへのリクエストが正しく送られているかどう確認するのか
ローカル開発では、ターミナル上で確認していた
- Dockerコンテナのログを確認:
docker logs
コマンドを使用して、バックエンドコンテナのログを確認。
docker-compose logs
コマンドを使用:docker-compose
を使用している場合、docker-compose logs
コマンドを使用して、すべてのサービスのログを確認。
- ブラウザの開発者ツールを使用:
- ブラウザの開発者ツールを使用して、ネットワークタブでリクエストとレスポンスを確認。
- APIエンドポイントのテスト:
- Postmanやcurlを使用して、APIエンドポイントに直接リクエストを送信し、レスポンスを確認。
Q2:Doc開発時のエラー確認方法は?特にバックエンド
- Dockerコンテナのログをリアルタイムで確認:
docker logs -f
コマンドを使用して、特定のコンテナのログをリアルタイムで確認。
docker-compose logs -f
コマンドを使用:docker-compose
を使用している場合、docker-compose logs -f
コマンドを使用して、すべてのサービスのログをリアルタイムで確認。
- ブラウザの開発者ツールを使用:
- ブラウザの開発者ツールを使用して、ネットワークタブでリクエストとレスポンスを確認。
- APIエンドポイントのテスト:
- Postmanやcurlを使用して、APIエンドポイントに直接リクエストを送信し、レスポンスを確認。
TIP
ローカル開発の際にターミナルでリアルタイムにリクエストの状況を確認していたように、上記にてDockerでも同様の方法で確認することが可能!
Q3:ローカルでの立ち上げ方は?Dockerとローカル開発での違い
- ローカル環境での起動:
- Pythonアプリケーションの場合、通常は
python app.py
のようなコマンドを使用。
- Pythonアプリケーションの場合、通常は
- Docker環境での起動:
docker-compose.yml
ファイルを作成し、docker-compose up
コマンドを使用してサービスを一括して起動。
まとめ
違いはdockerコンテナの中に入って操作するか否か。
後は基本的にローカル開発時とエラー確認方法等含め操作感は同じ!