인프런 커뮤니티 질문&답변

김동현님의 프로필 이미지

작성한 질문수

작정하고 장고! Django로 Pinterest 따라만들기 : 바닥부터 배포까지

강좌 오류 수정!!

61강 Dockerfile error

작성

·

420

0

안녕하세요 61강을 듣고 따라하던중 오류가 있어서 문의드립니다.

Docker image를 만들때

FROM python:3.11.6

WORKDIR /home/

RUN echo "testing1234"

RUN git clone https://github.com/akfldk1028/pragmatic.git

WORKDIR /home/pragmatic/

RUN pip install -r requirements.txt

RUN pip install gunicorn

RUN pip install mysqlclient

RUN echo "SECRET_KEY=django-insecure-s0ypvv7i_g2n6&sax1tgnv7egn_r=4!%j3xmynfv$=hj5b8(ws" > .env

EXPOSE 8000

CMD ["bash", "-c", "python manage.py collectstatic --noinput --settings=pragmatic.settings.deploy && python manage.py migrate --settings=pragmatic.settings.deploy && gunicorn pragmatic.wsgi --env DJANGO_SETTINGS_MODULE=pragmatic.settings.deploy --bind 0.0.0.0:8000"]

위의 코드와 같이 그대로 따라 했는데 이전에는 구동이 됬었는데

RUN echo "testing1234"
```

이거를 위에 붙이니까 다음과 같이 오류가 뜨더군요..

fatal: could not read Username for 'https://github.com': No such device or address The command '/bin/sh -c git clone https://github.com/akfldk1028/pragmatic.git' returned a non-zero code: 128

오류가 이렇게 떠서 이리저리 어려움을 겪다가

나중에 github 저장소를 private 에서 public으로 바꾸어주니까 다시 진행되긴 했는데 의문점이 남아 질문드립니다.

혹시 나중에 프로젝트를 private로 바꾸고 진행하려면 Docker file에 GitHub 액세스토큰을 추가해야하는 건가요? 아니면 DockerContainer 내에서 SSH키를 사용해야하는건가요?

 

답변 1

0

안녕하세요 김동현 님, 인프런 AI 인턴이에요.
Dockerfile 내에서 private GitHub 저장소에 접근하기 위해서는 인증 정보가 필요합니다. 이를 위해 Dockerfile에는 GitHub 액세스 토큰을 추가하거나 Docker 컨테이너 내에서 SSH 키를 사용하는 방법이 있습니다.

  1. GitHub 액세스 토큰 사용 방법:

    • GitHub에서 액세스 토큰을 생성합니다.
    • Dockerfile에 다음과 같이 추가합니다:
      ”`
      FROM python:3.11.6

    # GitHub 액세스 토큰 환경 변수 설정
    ARG GITHUB_TOKEN
    ENV GITHUB_TOKEN=$GITHUB_TOKEN

    WORKDIR /home/

    RUN echo “testing1234”
    RUN git clone https://github.com/akfldk1028/pragmatic.git

    # … 이하 생략 …

    - Docker 빌드 시, "--build-arg" 옵션을 사용하여 액세스 토큰 값을 전달합니다:
    

    docker build –build-arg GITHUB_TOKEN=<액세스 토큰 값> -t myimage .
    “`

  2. Docker Container 내에서 SSH 키 사용 방법:

    • Docker 컨테이너 내에 SSH 키를 마운트하고, 해당 키를 사용하여 GitHub에 인증합니다.
    • Dockerfile에 다음과 같이 추가합니다:
      ”`
      FROM python:3.11.6

    WORKDIR /home/

    RUN echo “testing1234”
    COPY id_rsa /root/.ssh/id_rsa
    RUN chmod 600 /root/.ssh/id_rsa
    RUN ssh-keyscan github.com >> /root/.ssh/known_hosts
    RUN git clone git@github.com:akfldk1028/pragmatic.git

    # … 이하 생략 …

    - Docker 컨테이너 실행 시, "-v" 옵션을 사용하여 로컬에 있는 SSH 키를 컨테이너에 마운트합니다:
    

    docker run -v <로컬 SSH 키 경로>:/root/.ssh/id_rsa -t myimage
    “`

GitHub 액세스 토큰 방법과 SSH 키 사용 방법 중 선택하여 사용하시면 됩니다. 감사합니다!