Dockerのインストールさえしておけば、8つのプログラミング言語すべての環境を一発で構築できる実演プロジェクトです。
- Go - 並行処理(Goroutines)を活用したファイル処理
- Deno (TypeScript) - TypeScriptとWebAPIを活用したJSONファイル処理
- Kotlin - 関数型プログラミングとNull安全性を活用したデータ処理
- Java - Spring Bootフレームワークを活用したREST API
- Rust - 所有権システムとパフォーマンスを活用したシステムツール
- Python3 - データ分析ライブラリを活用したCSV処理
- Nim - メタプログラミングとマクロを活用したコード生成
- F# - 関数型プログラミングとパイプライン演算子を活用したデータ変換
各言語には以下の3つのプログラムが用意されています:
- hello/ - シンプルなHello Worldプログラム
- http/ - HTTPサーバー経由のHello Worldプログラム
- strength/ - 各言語の強みを活かしたプログラム(200行以下)
すべてのHTTPサーバーを起動
docker-compose up -d go-http deno-http kotlin-http java-http rust-http python-http nim-http fsharp-http
アクセス可能なURL:
- Go: http://localhost:8080
- Deno: http://localhost:8081
- Kotlin: http://localhost:8082
- Java: http://localhost:8083
- Java (Strength): http://localhost:8084
- Rust: http://localhost:8085
- Python: http://localhost:8086
- Nim: http://localhost:8087
- F#: http://localhost:8088
# 特定の言語の強みプログラムを実行
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# Go言語のすべてのプログラムを実行
docker-compose up go-hello go-http go-strength
# Python3のすべてのプログラムを実行
docker-compose up python-hello python-http python-strength全てのサービスを起動(注意: リソースを大量に消費します)
docker-compose up -d
既に使用されているポートがある場合は、docker-compose.ymlのポート番号を変更してください。
全サービスを同時起動する場合は、Dockerに十分なメモリを割り当ててください(推奨: 8GB以上)。
特定の言語でビルドエラーが発生した場合:
docker-compose build --no-cache go-hello
docker-compose build --no-cache
Docker Composeで複数サービスを一括で立ち上げた際、すべてのログが混在するため「動作確認したい内容」別に効率よくログを確認できるコマンド例をまとめます。
例えば「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-httpdocker compose logs go-hello deno-hello kotlin-hello java-hello rust-hello python-hello nim-hello fsharp-hellodocker compose logs go-strength deno-strength kotlin-strength java-strength rust-strength python-strength nim-strength fsharp-strength例:すべてのGoサービスのログ
docker compose logs | grep go-例:エラーメッセージのみ抽出
docker compose logs | grep -i errorGoの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-httpdocker compose ps --services # サービス名一覧を取得
docker compose logs サービス名 # 必要なものに合わせて実行- docker compose logsに
-tでタイムスタンプ付与、--tail Nで直近N行のみ取得も便利です。 - サービス名を複数列挙すれば“欲しい内容グループごと”にまとめて表示できます。
- grepやless・more等シェルのフィルタコマンドと組み合わせも有効です。
このように「サービスの役割単位」でコマンドを用意しておくと多サービス同時起動時のログ確認・デバッグが大変効率的になります。