Skip to content

YoshinovLab/docker-multi-lang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

多言語Docker実演プロジェクト

Dockerのインストールさえしておけば、8つのプログラミング言語すべての環境を一発で構築できる実演プロジェクトです。

対応言語

  • Go - 並行処理(Goroutines)を活用したファイル処理
  • Deno (TypeScript) - TypeScriptとWebAPIを活用したJSONファイル処理
  • Kotlin - 関数型プログラミングとNull安全性を活用したデータ処理
  • Java - Spring Bootフレームワークを活用したREST API
  • Rust - 所有権システムとパフォーマンスを活用したシステムツール
  • Python3 - データ分析ライブラリを活用したCSV処理
  • Nim - メタプログラミングとマクロを活用したコード生成
  • F# - 関数型プログラミングとパイプライン演算子を活用したデータ変換

各言語で用意されているプログラム

各言語には以下の3つのプログラムが用意されています:

  1. hello/ - シンプルなHello Worldプログラム
  2. http/ - HTTPサーバー経由のHello Worldプログラム
  3. strength/ - 各言語の強みを活かしたプログラム(200行以下)

使用方法

1. 全ての言語のHello Worldを実行

すべてのHTTPサーバーを起動

docker-compose up -d go-http deno-http kotlin-http java-http rust-http python-http nim-http fsharp-http

アクセス可能なURL:

3. 各言語の強みプログラムを実行

# 特定の言語の強みプログラムを実行
docker-compose up go-strength
docker-compose up deno-strength
docker-compose up kotlin-strength
docker-compose up rust-strength
docker-compose up python-strength
docker-compose up nim-strength
docker-compose up fsharp-strength

4. 特定の言語だけを実行

# Go言語のすべてのプログラムを実行
docker-compose up go-hello go-http go-strength

# Python3のすべてのプログラムを実行
docker-compose up python-hello python-http python-strength

5. 全サービスを一括起動

全てのサービスを起動(注意: リソースを大量に消費します)

docker-compose up -d

トラブルシューティング

ポート競合エラー

既に使用されているポートがある場合は、docker-compose.ymlのポート番号を変更してください。

メモリ不足

全サービスを同時起動する場合は、Dockerに十分なメモリを割り当ててください(推奨: 8GB以上)。

コンテナビルドエラー

特定の言語でビルドエラーが発生した場合:

特定のサービスを再ビルド

docker-compose build --no-cache go-hello

全サービスを再ビルド

docker-compose build --no-cache

動作確認

Docker Composeで複数サービスを一括で立ち上げた際、すべてのログが混在するため「動作確認したい内容」別に効率よくログを確認できるコマンド例をまとめます。

1. 特定サービスのログのみを見る

例えば「GoのHTTPサーバーの挙動だけ見たい」場合:

docker compose logs go-http

複数のサービス(例:全てのHTTPサーバー)を見るには半角スペース区切りで指定:

docker compose logs go-http deno-http kotlin-http java-http rust-http python-http nim-http fsharp-http

2. Hello World系(コンソール出力のみ)の動作確認

docker compose logs go-hello deno-hello kotlin-hello java-hello rust-hello python-hello nim-hello fsharp-hello

3. 各言語「強み」プログラムの動作確認

docker compose logs go-strength deno-strength kotlin-strength java-strength rust-strength python-strength nim-strength fsharp-strength

4. サービス名の一部でフィルタ(grep活用)

例:すべてのGoサービスのログ

docker compose logs | grep go-

例:エラーメッセージのみ抽出

docker compose logs | grep -i error

5. リアルタイムで追いかける(-f/--follow)

GoのHTTPサーバを起動しつつ、リアルタイムでログを確認:

docker compose logs -f go-http

全HTTPサーバ同時追跡も:

docker compose logs -f go-http deno-http kotlin-http java-http rust-http python-http nim-http fsharp-http

6. サービス一覧を取得し必要なログを素早く見る

docker compose ps --services      # サービス名一覧を取得
docker compose logs サービス名   # 必要なものに合わせて実行

補足

  • docker compose logsに-tでタイムスタンプ付与、--tail Nで直近N行のみ取得も便利です。
  • サービス名を複数列挙すれば“欲しい内容グループごと”にまとめて表示できます。
  • grepやless・more等シェルのフィルタコマンドと組み合わせも有効です。

このように「サービスの役割単位」でコマンドを用意しておくと多サービス同時起動時のログ確認・デバッグが大変効率的になります。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors