Dockerfile의 Git 비밀 키
2561 단어 dockerfile도커Git
배경
개발 환경에서의 작업시, Docker 사용해 프라이빗 리포지토리 clone 했을 때에, 비밀 열쇠 볼 수 버리는 것이 매우 신경이 쓰이고. 우선 여러가지 조사해 보았으므로 그 결과를 써 본다.
참고 사이트
했던 일
이하의 2개의 대응을 해 보았다.
1. 멀티스테이지 빌드
왜?
docker history에 불필요한 단계가 표시되지 않도록
방법, 방법
as로 중간 아티팩트를 저장하고 마지막으로 거기에서 복사하여 중간 아티팩트의 내용을 볼 수없는 패턴
# syntax = docker/dockerfile:experimental
FROM ruby:2.5 as intermediate
# 処理諸々
[・・・]
# マルチステージビルド
FROM ruby:2.5
COPY --from=intermediate / /
주의점
COPY전까지 실시한 작업(ex. bundle install)에서 뭔가 디렉토리에 변경이 있었을 경우, 대상 디렉토리를 확실히 COPY할 필요가 있다.
↓
처음에는/root/root만을 대상으로 하고 있었지만, bundle install 로/usr/local/bundle 에 인스톨 되었기 때문에, COPY 대상외로, gem이 없어야 화났다.
2. BuildKit 사용
왜?
~/.ssh/id_rsa
같은 비밀 키를 컨테이너에 남기지 않기 위해방법, 방법
--mount=type=secret,id=ssh,target=/root/.ssh/id_rsa git clone
옵션을 붙여 git clone # Git
ARG SSH_PRIVATE_KEY
RUN mkdir /root/.ssh/
RUN touch /root/.ssh/id_rsa
RUN echo "${SSH_PRIVATE_KEY}" > /root/.ssh/id_rsa
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan -t rsa github.com >> /root/.ssh/known_hosts
RUN chmod 600 /root/.ssh/*
# プロジェクトclone
WORKDIR /root/
RUN --mount=type=secret,id=ssh,target=/root/.ssh/id_rsa
RUN git clone [プロジェクト]
RUN rm /root/.ssh/id_rsa #→ rm しないと残ったままっぽい
↓
$ docker build -t yaga0429/ruby-chromedriver --build-arg SSH_PRIVATE_KEY="$(cat ~/.ssh/id_rsa)" --no-cache
요약
ECR이라든지 image를 프라이빗으로 관리하거나 하면, 별로 신경이 쓰이지 않는 것일까.
그 근처는 지금 모르겠지만, 어쩐지 깨끗이 했기 때문에 오케이.
뭐 해 보았으므로 잊지 않는 사이에.
Reference
이 문제에 관하여(Dockerfile의 Git 비밀 키), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/y-agatsuma/items/0a64fc5ce1b69828730c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)