임베디드 관련 카테고리/Ubuntu

Docker로 GitHub 리포지토리 클론 및 환경 설정 자동화하기

CBJH 2024. 10. 23.
728x90
반응형

이 포스트에서는 Dockerfile에 GITHUB_TOKEN을 사용해 GitHub에서 코드를 클론하고, 도커 이미지 생성 시 라이브러리를 자동으로 설치하는 방법을 알아보겠습니다. 이 과정을 통해 반복적인 환경 설정을 자동화하고, Docker 이미지를 효율적으로 빌드할 수 있습니다.


1. 준비 작업

1.1 GITHUB_TOKEN 생성하기

  1. GitHub에 로그인합니다.
  2. **Settings → Developer Settings → Personal Access Tokens (classic)**으로 이동합니다.
  3. Generate new token 버튼을 클릭하고 필요한 권한(예: repo)을 선택합니다.
  4. 생성된 토큰을 복사합니다. 이 토큰은 나중에 사용되므로 안전한 곳에 보관하세요.

2. Dockerfile 작성

아래는 Dockerfile 예제로, 도커 이미지 생성 과정에서 GitHub 리포지토리의 코드를 자동으로 클론하고 필요한 라이브러리를 설치합니다.

Dockerfile 예제

# 1. Ubuntu 20.04 이미지를 기본 이미지로 사용
FROM ubuntu:20.04

# 2. 필요한 패키지 설치 (git 포함)
RUN apt update && apt install -y \
    python3 python3-pip sudo git vim curl

# 3. GITHUB_TOKEN을 환경 변수로 전달받기 위한 ARG 설정
ARG GITHUB_TOKEN

# 4. GitHub에서 코드 다운로드
RUN git clone --branch dynamo-inserter https://$GITHUB_TOKEN@github.com/<username>/<repository>.git /app

# 5. 작업 디렉토리 설정
WORKDIR /app

# 6. 설치가 필요한 라이브러리 설치 (예시)
RUN sudo apt update && sudo apt install -y $(grep -v '^#' /app/<repository>/requirements.txt)

3. Docker 이미지 생성 명령어

1. GITHUB_TOKEN 환경 변수 설정
도커 빌드 시 토큰을 안전하게 전달하기 위해, 터미널에서 환경 변수를 설정합니다.

export GITHUB_TOKEN=your_personal_access_token

 

2. Docker 이미지 빌드
아래 명령어로 도커 이미지를 빌드합니다.
--build-arg 옵션을 사용해 GITHUB_TOKEN을 Dockerfile에 전달합니다.

sudo docker build --build-arg GITHUB_TOKEN=$GITHUB_TOKEN -t myapp:latest .

4. Docker 컨테이너 실행

도커 이미지를 생성한 후, 아래 명령어로 컨테이너 인터렉티브 모드를 실행합니다.

sudo docker run -it myapp:latest /bin/bash
  • 컨테이너 내부에서 /app 디렉터리에 클론된 코드와 설치된 라이브러리를 확인할 수 있습니다.

5. 예상 출력 및 확인 방법

  1. 이미지 빌드 과정 중 로그에서 GitHub 리포지토리의 클론 진행 상황이 출력됩니다.
  2. 컨테이너 내부에서 /app 디렉터리로 이동해, 클론된 리포지토리와 requirements.txt 파일이 있는지 확인합니다.
cd /app
ls -al

   

   3. 필요한 라이브러리가 정상적으로 설치되었는지 확인합니다.

pip3 list

 

6. 주의사항 및 보안 팁

  1. 토큰 관리에 주의
    • GITHUB_TOKEN이 포함된 이미지를 외부에 공개하지 않도록 주의하세요.
    • .env 파일을 사용해 토큰을 안전하게 관리하고 필요할 때만 로드하는 것도 좋은 방법입니다.
  2. 토큰 만료 및 갱신
    • 생성된 토큰의 유효 기간이 만료되면, 새 토큰을 발급받아 Dockerfile 빌드에 사용하세요.

7. 결론

이제 Docker를 사용해 GitHub 리포지토리를 클론하고, 환경 설정을 자동화할 수 있습니다.
이 방법을 활용하면 반복적인 설정 작업을 줄이고, 일관된 개발 환경을 유지할 수 있습니다.

댓글