ホームページ  >  記事  >  バックエンド開発  >  Dockerfile パッケージを

Dockerfile パッケージを

WBOY
WBOY転載
2024-02-05 23:36:08429ブラウズ

Dockerfile 包去

質問内容

go と gin で書かれたアプリケーションがあります。ファイルは次のように分割されています。

リーリー

各フォルダーには、別のパッケージを呼び出すパッケージがあります。例:

リーリー

リーリー

私の go.mod は次のようなものです:

リーリー

つまり、私のアプリケーションフローに従います..

このアプリケーションの docker イメージを作成したい (学習目的で docker の基礎を学びたいので、テスト用にこの API を作成しました)

ドッカーイメージ:

リーリー

イメージをビルドしようとしたときにエラーが発生しました:

リーリー

理由を知っている人はいますか?この問題の解決方法がまったくわかりません。パッケージを Docker イメージにインポートするにはどうすればよいですか?

### - 編集###

提案に従って dockerfile を更新しました:

リーリー

###間違い:###

リーリー

正解

問題は
copy main.go ./

this で発生します。


golang は依存関係/パッケージをどのように表示しますか?

モジュール キャッシュ

: パッケージが modcache に存在するかどうかを確認します

$gopath/pkg/mod
  • プロジェクト ディレクトリ: パッケージが modcache に見つからない場合は、プロジェクト モジュールのルートに相対的にパッケージが存在するかどうかがチェックされます。 (github.com/guilherm5/login-user/models - models
  • という名前のディレクトリが存在するかどうかを確認します。)
  • リモート: パッケージがモジュール キャッシュまたはプロジェクト ルートで見つからない場合は、リモート リポジトリから取得します。
  • あなたの場合、プロジェクト モジュールのルートにパッケージ (ディレクトリ) がすでにありますが、main.go のみがコンテナ システムにコピーされます。 したがって、
  • go mod tiny
を実行すると、キャッシュまたはルート ディレクトリ内のパッケージを確認できません。次に、リモートからそれを取得しようとします。

リモート リポジトリにコードがあるのに、 がプルされないのはなぜですか? リポジトリはプライベートなので。 ######解決######

すべてのファイルとフォルダーをコンテナー システムにコピーします

リーリー 問題は解決されます。最終的な運用ビルドには、必要なファイルのみを含むマルチステージ ビルドがすでに存在します。 ###チェック###

go モジュール

プライベートモジュール

プライベート リポジトリを「取得」する正しい方法は何ですか?

以上がDockerfile パッケージをの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。