Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Membina Aplikasi Go dengan Modul GitLab Peribadi di Docker menggunakan SSH?

Bagaimana untuk Membina Aplikasi Go dengan Modul GitLab Peribadi di Docker menggunakan SSH?

Barbara Streisand
Barbara Streisandasal
2024-12-07 10:32:12274semak imbas

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

Membina Aplikasi Go dengan Modul GitLab Peribadi di Docker

Panduan ini bertujuan untuk menangani cabaran khusus yang dihadapi apabila menyepadukan modul GitLab peribadi ke dalam aplikasi Go dalam Docker.

Memahami Isu

Isu timbul apabila Dockerfile cuba menarik pakej peribadi daripada GitLab, tetapi pengesahan gagal walaupun mengikuti tutorial serupa untukGitHub. Masalah khusus ini berpunca daripada perbezaan antara mekanisme pengesahan GitHub dan GitLab.

Penyelesaian Cadangan

Untuk menyelesaikan isu ini, kami akan menggunakan pengesahan berasaskan SSH dan menggunakan eksperimen Docker ciri.

Docker Eksperimen Ciri

Dayakan ciri Docker percubaan dengan menambahkan ulasan berikut pada permulaan Fail Docker anda:

# syntax=docker/dockerfile:experimental

Persediaan Fail Docker

  1. Pastikan persekitaran binaan anda mempunyai openssh-client:
RUN apk --no-cache add build-base git mercurial gcc curl openssh-client
  1. Tubuhkan known_hosts dan konfigurasikan .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. Bina aplikasi Go anda dengan pengesahan berasaskan SSH :
ENV GO111MODULE=on
ENV GOPRIVATE=gitlab.com/<company-name>
RUN --mount=type=ssh cd cmd/app/ &amp;&amp; go build -o app

Muat Kunci dalam ssh-agent

Sebelum membina imej Docker, kunci peribadi mesti dimuatkan ke dalam ssh-agent:

ssh-add id_rsa

Membina Imej Docker

Bina imej Docker menggunakan yang berikut arahan:

DOCKER_BUILDKIT=1 docker build --progress=plain .

Menyahpepijat Sambungan SSH

Jika masalah sambungan SSH timbul, tambahkan arahan nyahpepijat berikut pada fail Docker anda:

RUN ssh -A -v -l git gitlab.com

Menyelesaikan Isu AppArmor

Jika apparmor adalah menyekat akses Docker kepada soket kunci SSH, edit profil apparmor dan tambah baris berikut sebelum penutupan }:

/run/user/1000/keyring/ssh rw,

Isu Nama Fail Utama

Pastikan bahawa nama fail kunci peribadi ialah salah satu nilai lalai yang SSH jangkakan (cth., id_rsa) atau gunakan .ssh/config fail untuk memetakan nama kunci tersuai kepada lalai yang dijangkakan.

Nota Tambahan

Elakkan menggunakan chmod untuk memberikan kebenaran, kerana entri kunci SSH mencukupi untuk berkongsi maklumat peribadi kunci. Ia juga disyorkan untuk mengelak daripada menggunakan .netrc kerana ia membenamkan bukti kelayakan ke dalam imej Docker, yang berpotensi menjejaskan keselamatan.

Atas ialah kandungan terperinci Bagaimana untuk Membina Aplikasi Go dengan Modul GitLab Peribadi di Docker menggunakan SSH?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn