ホームページ > バックエンド開発 > Golang > SSH を使用して Docker でプライベート GitLab モジュールを使用して Go アプリを構築するにはどうすればよいですか?

SSH を使用して Docker でプライベート GitLab モジュールを使用して Go アプリを構築するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-12-07 10:32:12
オリジナル
250 人が閲覧しました

How to Build Go Apps with Private GitLab Modules in Docker using SSH?

Docker でプライベート GitLab モジュールを使用した Go アプリの構築

このガイドは、プライベート GitLab モジュールを Go アプリケーションに統合するときに直面する特定の課題に対処することを目的としていますDocker 内。

問題

この問題は、Dockerfile が GitLab からプライベート パッケージをプルしようとしたときに、GitHub の同様のチュートリアルに従っているにもかかわらず認証に失敗したときに発生します。この特定の問題は、GitHub と GitLab の認証メカニズムの違いに起因します。

提案された解決策

この問題を解決するには、SSH ベースの認証を利用し、Docker の実験的認証を採用します。機能。

実験的な Docker機能

Dockerfile の先頭に次のコメントを追加して、実験的な Docker 機能を有効にします:

# syntax=docker/dockerfile:experimental
ログイン後にコピー

Dockerfile Setup

  1. ビルド環境に次の機能があることを確認してください。 openssh-client:
RUN apk --no-cache add build-base git mercurial gcc curl openssh-client
ログイン後にコピー
  1. known_hosts を確立し、.gitconfig を設定します:
RUN mkdir -p -m 0700 ~/.ssh && \
    ssh-keyscan gitlab.com >> ~/.ssh/known_hosts && \
    echo -e "[url \"[email&#160;protected]:<company-name>\"]\n\tinsteadOf = https://gitlab.com/<company-name>\"" >> ~/.gitconfig
ログイン後にコピー
  1. SSH ベースで Go アプリケーションを構築します認証:
ENV GO111MODULE=on
ENV GOPRIVATE=gitlab.com/<company-name>
RUN --mount=type=ssh cd cmd/app/ &amp;&amp; go build -o app
ログイン後にコピー

ssh-agent にキーをロード

Docker イメージをビルドする前に、秘密キーを ssh-agent にロードする必要があります。

ssh-add id_rsa
ログイン後にコピー

Docker の構築イメージ

次のコマンドを使用して Docker イメージをビルドします。

DOCKER_BUILDKIT=1 docker build --progress=plain .
ログイン後にコピー

SSH 接続のデバッグ

SSH 接続の問題が発生した場合は、次のコマンドを追加します。次のデバッグコマンドをDockerfile:

RUN ssh -A -v -l git gitlab.com
ログイン後にコピー

AppArmor の問題の解決

AppArmor が SSH キー ソケットへの Docker のアクセスをブロックしている場合は、AppArmor プロファイルを編集し、次の行を閉じる }:

/run/user/1000/keyring/ssh rw,
ログイン後にコピー

キー ファイル名

秘密キーのファイル名が SSH が予期するデフォルト値 (id_rsa など) の 1 つであることを確認するか、.ssh/config ファイルを使用してカスタム キー名を予期されるデフォルトにマップします。

追加の注意事項

許可するために chmod を使用しないでください秘密キーを共有するには SSH キーのエントリで十分であるため、権限が必要です。また、.netrc は Docker イメージに認証情報を埋め込み、セキュリティを損なう可能性があるため、使用しないことをお勧めします。

以上がSSH を使用して Docker でプライベート GitLab モジュールを使用して Go アプリを構築するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート