Actions로 Docker 이미지 빌드
GitHub Actions 워크플로 내에서 애플리케이션의 Docker 이미지를 빌드하는 과정을 자동화합니다.
Actions로 Docker 이미지 빌드은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
도커 이미지란 무엇인가요?
환영합니다! 이 레슨에서는 GitHub 작업을 사용해 도커 이미지를 빌드하는 방법을 배웁니다.
먼저 도커 이미지란 무엇일까요? 소프트웨어를 실행하는 데 필요한 모든 것을 포함하는 가볍고 독립적이며 실행 가능한 패키지라고 생각해 보세요.
- 사용자 코드
- 런타임(예: Java, 파이썬)
- 시스템 도구 및 라이브러리
- 구성 파일
이는 도커 컨테이너를 만들기 위한 설계도와 같으며, 다양한 환경에서 애플리케이션이 일관되게 실행되도록 합니다.
도커 빌드를 자동화하는 이유
도커 이미지를 수동으로 빌드하는 작업은 반복적이고 오류가 발생하기 쉽습니다. 이때 자동화가 유용합니다!
GitHub 작업을 사용해 도커 이미지 빌드를 지속적 통합/지속적 배포 파이프라인에 통합하면 다음과 같은 이점을 얻을 수 있습니다.
- 일관성: 모든 빌드가 동일한 단계를 따릅니다.
- 속도: 자동화된 빌드가 수동 빌드보다 빠릅니다.
- 신뢰성: 사람의 오류를 줄입니다.
- 통합: 코드가 변경되면 빌드가 자동으로 시작됩니다.
이는 현대적인 DevOps의 핵심 실천 방법입니다!
도커 파일 설계도
도커 파일은 도커 이미지를 조립하는 데 필요한 모든 명령어가 포함된 텍스트 파일입니다. 레시피와 같습니다.
다음은 매우 간단한 도커 파일 예시입니다.
FROM alpine:latest
WORKDIR /app
COPY . .
CMD ["echo", "Hello from Docker!"]도커 파일 이해하기
이 간단한 Dockerfile을 자세히 살펴보겠습니다.
FROM alpine:latest: 기본 이미지를 지정합니다. 알파인이라는 작은 리눅스 배포판으로 시작합니다.WORKDIR /app: 이미지 내부의 작업 디렉터리를 설정합니다.COPY . .: 프로젝트 디렉터리의 모든 파일을 이미지 내부의/app디렉터리로 복사합니다.CMD ["echo", "Hello from Docker!"]: 이 이미지에서 컨테이너가 시작될 때 실행되는 명령어입니다.
이 파일은 프로젝트 루트에 있습니다.
워크플로 설정
GitHub 작업으로 도커 이미지를 빌드하려면 저장소에 YAML 파일(예: .github/workflows/docker-build.yml)을 만듭니다.
이 파일은 일련의 자동화된 단계를 정의하는 워크플로입니다.
이미지를 빌드하는 기본 워크플로에는 일반적으로 다음 단계가 포함됩니다.
- 코드를 가져옵니다.
- 도커 빌드 환경을 설정합니다.
- 도커 이미지를 빌드합니다.
1단계: 코드 가져오기
거의 모든 GitHub 작업 워크플로의 첫 단계는 저장소의 코드를 가져오는 것입니다. 이는 actions/checkout 작업을 사용해 수행합니다.
이 작업은 저장소를 실행기에 복제하여 Dockerfile과 애플리케이션 코드를 빌드 과정에서 사용할 수 있게 합니다.
워크플로 파일에서는 다음과 같이 작성합니다.
- name: Checkout repository code
uses: actions/checkout@v42단계: 도커 빌드엑스 설정
다음으로 도커 빌드 환경을 설정해야 합니다. docker/setup-buildx-action을 사용하는 것을 적극 권장합니다.
빌드엑스는 도커의 빌드 기능을 확장하며 다중 플랫폼 빌드와 같은 고급 기능을 지원하는 도커 구성 요소입니다.
워크플로에 다음 단계를 추가하세요.
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v33단계: 도커 이미지 빌드
이제 핵심인 이미지 빌드입니다! 이를 위해 docker/build-push-action을 사용합니다.
주요 설정은 다음과 같습니다.
context: .: 빌드 컨텍스트(일반적으로 저장소 루트)를 지정합니다.push: false: 지금은 레지스트리에 푸시하지 않고 빌드만 합니다. 푸시는 다음 레슨에서 다룹니다.tags: my-app:latest: 이미지에 이름과 태그를 지정합니다.
- name: Build and tag Docker image
uses: docker/build-push-action@v5
with:
context: .
push: false
tags: my-app:latest전체 빌드 워크플로 예시
다음은 도커 이미지를 빌드하는 전체 GitHub 작업 워크플로입니다. 이 YAML은 .github/workflows/docker-build.yml에 작성해야 합니다.
이 워크플로는 저장소에 push할 때마다 실행됩니다.
name: Build Simple Docker Image
on: [push]
jobs:
build-image:
runs-on: ubuntu-latest
steps:
- name: Checkout repository code
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build and tag Docker image
uses: docker/build-push-action@v5
with:
context: .
push: false
tags: my-app:latest확인
GitHub 작업으로 도커 이미지를 빌드하는 방법을 제대로 이해했는지 확인해 보겠습니다.
복습: 도커 이미지 빌드
잘하셨습니다! GitHub 작업으로 도커 이미지 빌드를 자동화하는 기본 원리를 배웠습니다.
다음 내용을 다뤘습니다.
- 도커 이미지가 무엇이며 왜 중요한지 알아보았습니다.
Dockerfile이 이미지 설계도로서 어떤 역할을 하는지 알아보았습니다.- 기본 GitHub 작업 워크플로를 설정했습니다.
actions/checkout,docker/setup-buildx-action,docker/build-push-action과 같은 필수 작업을 사용했습니다.
다음 레슨에서는 이렇게 빌드한 이미지를 컨테이너 레지스트리에 푸시하는 방법을 살펴보겠습니다!
자주 묻는 질문
“Actions로 Docker 이미지 빌드” 강의는 무료인가요?
네 — “Actions로 Docker 이미지 빌드” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
“Actions로 Docker 이미지 빌드”에서 뭘 배우나요?
GitHub Actions 워크플로 내에서 애플리케이션의 Docker 이미지를 빌드하는 과정을 자동화합니다. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“Actions로 Docker 이미지 빌드” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Actions로 Docker 이미지 빌드
- 레지스트리에 이미지 푸시
- Actions로 Kubernetes에 배포
- CI/CD의 Helm 차트 및 Kubernetes 매니페스트