Docker コンテナの作成
GitHub Issue から始める


コードベースの調査


コンテナのテスト
その後 Devin は各コンテナのテストに進み、まず MongoDB サーバーをテストしてから、続いて Go 環境をテストします。コンテナが立ち上がると、Devin はアプリケーションそのもののテストに移ります。Devin のコマンド履歴を確認すると、Swagger の API 定義を見つけて組み込みの Browser に読み込み、バックエンド API の動作を確認していることが分かります。

デバッグ
Connection refused エラーが発生したため、Devin は直ちにデバッグに進み、Docker 設定の修正を行います。これは、セッションを進めながら Devin が自動的にエラーを修正していく、よくあるパターンです。Devin はすぐに設定上の問題を修正し、Docker コンテナを再起動し、行った作業をまとめて要約します。
- Devin は Dockerfile に加えて、docker-compose.yml ファイルをセットアップします。これにより、ネットワークの構成方法、ボリュームの設定方法、どのサービスが互いに依存しているかといった、より具体的なオーケストレーション設定が可能になります。
- Devin はビルドプロセスを
go mod tidyから変更し、Docker ビルド内で一部の依存関係をキャッシュできる方法に切り替えます。 - Devin は動的リンクではなく静的リンクされた Go バイナリをビルドし、Docker イメージをより軽量にします。
- Devin は HTTPS 用の CA 証明書を設定し、環境変数を直接渡すのではなく、.env ファイルを使って設定できるようにします。
- そして何より重要なのは、プロジェクトの PR にはない MongoDB サービスを Docker 設定に追加している点です。PR 側は、開発者がすでに別の MongoDB インスタンスを起動していることを前提としています。


