Docker에서 비공개 GitLab 모듈을 사용하여 Go 앱 구축
이 가이드의 목표는 비공개 GitLab 모듈을 Go 애플리케이션에 통합할 때 직면하는 특정 문제를 해결하는 것입니다. Docker 내에서.
이해하기 문제
Dockerfile이 GitLab에서 개인 패키지를 가져오려고 시도하지만 GitHub에 대한 유사한 튜토리얼을 따랐음에도 불구하고 인증이 실패하는 경우 문제가 발생합니다. 이 특정 문제는 GitHub와 GitLab의 인증 메커니즘의 차이에서 비롯됩니다.
제안된 솔루션
이 문제를 해결하기 위해 SSH 기반 인증을 활용하고 Docker의 실험적인 방법을 사용합니다. 기능.
실험용 Docker 기능
Dockerfile 시작 부분에 다음 주석을 추가하여 실험적인 Docker 기능을 활성화하세요.
# syntax=docker/dockerfile:experimental
Dockerfile Setup
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
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,
Key 파일 이름 문제
개인 키 파일 이름이 SSH가 사용하는 기본값 중 하나인지 확인하세요. 예상(예: id_rsa)하거나 .ssh/config 파일을 사용하여 사용자 정의 키 이름을 예상 기본값에 매핑합니다.
추가 참고 사항
chmod를 사용하여 권한을 부여하지 마세요. SSH 키 항목은 개인 키를 공유하는 데 충분하므로 권한이 필요합니다. 또한 .netrc는 Docker 이미지에 자격 증명을 내장하여 잠재적으로 보안을 손상시키므로 사용하지 않는 것이 좋습니다.
위 내용은 SSH를 사용하여 Docker에서 개인 GitLab 모듈로 Go 앱을 구축하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!