본문 바로가기
BackEnd

CICD 구현해보기 (2) - DockerFile

by Jiwon_Loopy 2025. 11. 7.
반응형

Docker 란?

컨테이너를 활용하여 소프트웨어를 배포 및 구동하기 위한 오픈소스 플랫폼이다.

Docker를 이용하면 자바(JDK), 오라클 데이터베이스, MySQL, Redis 등과 같은 다양한 소프트웨어 이미지를 쉽게 가져와 컨테이너 형태로 실행할 수 있다.

 

GitHub Actions를 이용해 구축한 CI 파이프라인에서 애플리케이션을 빌드한 후, 생성된 빌드 산출물을 Dockerfile을 통해 읽어와 Docker 이미지를 생성하고,  push하는 과정까지를 담아보았다.

 

 

시작해보기

 

Github 해당 레포지토리에서 Settings 왼쪽에 Security부분에서 Actons를 가보게되면, 

 

 

 

 

위 사진처럼 Repository secrets를 통해 민감한 키와 같은 내용들을 환경변수로 관리해 줄 수 있다.

 

 

 

도커 홈페이지에 접속해서 Repositories부분을 눌러 왼쪽에 나온 아이디가 USERNAME이다.

스크립트 작성 시 로그인 아이디와, 레포지토리의 아이디를 혼동하여 실패했었다.

 

 

workflow 만들기

    - name: docker image build
      run: docker build -t ${{ secrets.DOCKERHUB_USERNAME }}/jiwon-spring:latest .

    - name: docker login
      uses: docker/login-action@v2
      with:
        username: ${{ secrets.DOCKERHUB_USERNAME }}
        password: ${{ secrets.DOCKERHUB_USERPASSWORD }}

    - name: docker Hub push
      run: docker push ${{ secrets.DOCKERHUB_USERNAME }}/jiwon-spring:latest

 

첫 줄 부터 문단 별로 설명을 해보면,

1번 문단은 이미지 이름과 태그를 지정하여 빌드하는 것이다.

2번 문단은 gitaction이 도커에 접속할 수 있도록 해주는 것이고,

3번 문단은 push를 통해 이미지한 파일을 밀어넣어주는 역할을 한다.

 

 

Dockerfile 작성하기

 

도커파일은 찾아보니 3가지 버전이 있었는데, 연습용 기본 버전, 조금 더 세밀화 된 프로덕션용 버전, 멀티스테이지 버전이 있다.

빌드 위치 GitHub Actions GitHub Actions Dockerfile 내부
이미지 크기 작음 (~150MB) 작음 (~150MB) 중간 (~200MB)
빌드 속도 빠름 빠름 느림
사용 편의성 ⭐⭐⭐ ⭐⭐⭐ ⭐⭐
환경 변수 지원 기본 커스터마이징 가능 기본

 

 

가장 기본적인, Jar파일을 복사하여 이미지로 빌드하는 것을 선택하였다.

 

FROM eclipse-temurin:17-jre-alpine
WORKDIR /app
COPY build/libs/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

 

/app 폴더로 들어가 jar파일을 복사하여 이미지화하는 코드이다. 폴더가 없다면 만들어서 자동으로 실행한다.

 

 

 

Dockerfile이 준비되었으니, gitAction을 다시 실행해보면, 

 

workflow가 정상적으로 실행된 것을 볼 수 있다.

 

 

Docker Desktop으로 들어가 이미지가 잘 push되었는지 확인해보았다.

 

이미지가 잘 들어간 것을 볼 수 있다.

728x90
반응형