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
RUN apk --no-cache add build-base git mercurial gcc curl openssh-client
RUN mkdir -p -m 0700 ~/.ssh && \ ssh-keyscan gitlab.com >> ~/.ssh/known_hosts && \ echo -e "[url \"[email protected]:<company-name>\"]\n\tinsteadOf = https://gitlab.com/<company-name>\"" >> ~/.gitconfig
ENV GO111MODULE=on ENV GOPRIVATE=gitlab.com/<company-name> RUN --mount=type=ssh cd cmd/app/ && 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!