首頁 > 後端開發 > Golang > 如何使用 SSH 在 Docker 中使用私有 GitLab 模組建立 Go 應用程式?

如何使用 SSH 在 Docker 中使用私有 GitLab 模組建立 Go 應用程式?

Barbara Streisand
發布: 2024-12-07 10:32:12
原創
245 人瀏覽過

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
登入後複製

Docker設定

    確保您的建置環境有openssh-client:
RUN apk --no-cache add build-base git mercurial gcc curl openssh-client
登入後複製
    建立known_hosts並且設定.git config:
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
登入後複製
    使用基於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 .
登入後複製

使用以下命令建置Docker鏡像:

偵錯SSH 連線

RUN ssh -A -v -l git gitlab.com
登入後複製

如果出現SSH 連線問題,請新增下列偵錯指令到您的Dockerfile:

解決AppArmor問題
/run/user/1000/keyring/ssh rw,
登入後複製

如果apparmor 阻止Docker 存取SSH 密鑰套接字,請編輯apparmor 設定檔並在關閉}:

密鑰檔案名稱問題

確保私鑰檔案名稱是SSH 期望的預設值之一(例如id_rsa)或使用 .ssh/config 檔案將自訂金鑰名稱對應到預期的預設值。

附加說明避免使用 chmod授予權限,因為 SSH 金鑰條目足以共享私鑰。也建議避免使用 .netrc,因為它將憑證嵌入到 Docker 映像中,可能會危及安全性。

以上是如何使用 SSH 在 Docker 中使用私有 GitLab 模組建立 Go 應用程式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板