반응형
CI/CD Automation Series 01
개발은 코딩까지만,
GitHub Actions & Docker로 배포 자동화하기
안녕하세요, code-resting입니다. 혹시 아직도 서버에 직접 SSH로 접속해서 ./gradlew build를 실행하고 계신가요? 2026년의 백엔드 개발자에게 배포 자동화는 '선택'이 아닌 '기본'입니다. 오늘은 가장 대중적인 도구인 GitHub Actions를 활용해 Docker 이미지를 자동으로 생성하고 저장소에 푸시하는 과정까지 알아보겠습니다.
1. CI/CD 파이프라인의 핵심 개념
CI(지속적 통합)와 CD(지속적 배포)는 개발자가 비즈니스 로직에만 집중할 수 있게 해주는 안전장치입니다.
- 🚀 CI (Continuous Integration): 코드 변경 사항을 공유 리포지토리에 통합하고 자동으로 빌드/테스트를 수행합니다.
- 📦 CD (Continuous Deployment): 빌드된 결과물을 실제 운영 환경에 자동으로 배포합니다.
2. GitHub Actions 워크플로우 작성
.github/workflows/deploy.yml 파일을 생성하여 배포 자동화 시나리오를 정의합니다.
name: Java CI/CD with Docker
on:
push:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up JDK 21
uses: actions/setup-java@v4
with: { java-version: '21', distribution: 'temurin' }
# 1. 빌드 시작
- name: Build with Gradle
run: ./gradlew build
# 2. 도커 이미지 빌드 및 푸시
- name: Docker Login & Push
run: |
docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASS }}
docker build -t my-app .
docker tag my-app ${{ secrets.DOCKER_USER }}/my-app:latest
docker push ${{ secrets.DOCKER_USER }}/my-app:latest
3. 보안 관리: GitHub Secrets
도커 허브(Docker Hub) 계정 정보나 서버 접속 키(SSH)는 절대 코드에 노출되어서는 안 됩니다. GitHub의 Settings > Secrets and variables에서 안전하게 환경 변수로 관리해야 합니다.
💡 1편을 마무리하며
이제 main 브랜치에 코드를 푸시하기만 하면, GitHub의 가상 머신이 대신 빌드하고 Docker 이미지를 만들어 저장소에 올려줍니다. 내일은 이렇게 올라온 이미지를 실제 서버에서 가져와 컨테이너를 교체하는 실전 배포 편으로 찾아오겠습니다.
반응형
'도커' 카테고리의 다른 글
| [CI/CD 시리즈 02] 1분 만에 끝내는 실전 배포: Docker Compose와 GitHub Actions 연동 (0) | 2026.03.20 |
|---|---|
| 도커 (0) | 2021.02.13 |
댓글