Docker Compose GitHub Actions 연동 완벽 가이드! Git Push부터 자동 배포 Pipeline 구축하기

현대적인 서버 운영에서는 코드를 변경할 때마다 직접 서버에 접속해서 배포하지 않습니다.

GitHub Actions 같은 CI/CD 도구를 사용하면 코드 변경부터 Docker Image 생성, 서버 배포까지 자동화할 수 있습니다.

기존 방식:

개발자

↓

서버 접속

↓

Git Pull

↓

Docker Build

↓

Container 재시작

문제:

  • 반복 작업 증가
  • 배포 실수 발생
  • 작업 기록 부족
  • 여러 서버 관리 어려움

자동화 방식:

Git Push

↓

GitHub Actions 실행

↓

Docker Build

↓

Image Push

↓

Server Deploy

↓

서비스 확인

Docker Compose와 GitHub Actions를 연결하면 안정적인 Production 배포 환경을 만들 수 있습니다.

이번 글에서는 GitHub Actions 기본 구조부터 Docker Image Build, Registry Push, SSH 배포, Docker Compose 자동 실행까지 실제 서버 운영 구조 기준으로 알아보겠습니다.

GitHub Actions란 무엇인가?

GitHub Actions는 GitHub에서 제공하는 자동화 플랫폼입니다.

사용 가능한 작업:

  • Build
  • Test
  • Deploy
  • Script 실행
  • Server 관리

기본 구조:

Repository

↓

Workflow

↓

Runner

↓

Command 실행

Workflow 파일:

.github/

└── workflows/

    └── deploy.yml

GitHub Actions는 YAML 파일로 동작을 정의합니다.

Docker Compose GitHub Actions 구조

Production 자동 배포 구조:

Developer

↓

Git Push

↓

GitHub Actions

↓

Docker Build

↓

Docker Registry

↓

Production Server

↓

Docker Compose

각 역할:

GitHub:

코드 저장

Actions:

자동 작업 실행

Docker:

Image 생성

Compose:

Container 배포

GitHub Actions Workflow 기본 구조

파일 생성:

.github/workflows/deploy.yml

기본 형태:

name: Deploy

on:

  push:

    branches:

      - main


jobs:

  deploy:

    runs-on: ubuntu-latest

    steps:

      - uses: actions/checkout@v4

      - name: Deploy

        run: echo "Deploy"

동작:

main Push

↓

Workflow 실행

↓

명령 실행

Docker Image Build 자동화

GitHub Actions에서 Docker Build를 실행할 수 있습니다.

예:

- name: Docker Build

  run: docker build -t my-app .

과정:

Source Code

↓

Dockerfile

↓

Docker Image

Docker Compose Image Push 자동화

Build한 Image를 Registry에 저장합니다.

구조:

GitHub Actions

↓

Docker Build

↓

Docker Hub

↓

Production Server

Login:

- name: Login Docker Hub

  uses: docker/login-action@v3

Push:

- name: Push Image

  run: docker push my-app:latest

GitHub Actions Secret 설정

배포 정보는 GitHub Secret으로 관리합니다.

관리 대상:

  • Docker Password
  • Server SSH Key
  • Server IP
  • Database Password

위치:

Repository

↓

Settings

↓

Secrets and variables

↓

Actions

구조:

GitHub Secret

↓

Workflow

↓

Deploy

Docker Compose SSH 자동 배포

Production 서버에 접속하여 Compose를 실행합니다.

구조:

GitHub Actions

↓

SSH 연결

↓

Server

↓

docker compose up -d

예:

- name: Deploy Server

  uses: appleboy/ssh-action@v1

  with:

    host: ${{ secrets.SERVER_HOST }}

    username: ubuntu

    key: ${{ secrets.SSH_KEY }}

    script:

      docker compose pull

      docker compose up -d

동작:

새 Image 다운로드

↓

Container 업데이트

↓

서비스 재시작

Docker Compose Production Deploy Workflow 예제

전체 흐름:

name: Production Deploy

on:

  push:

    branches:

      - main


jobs:

  deploy:

    runs-on: ubuntu-latest


    steps:

      - uses: actions/checkout@v4


      - name: Build Image

        run: docker build -t app .


      - name: Deploy

        run: docker compose up -d

실제 운영에서는 Registry와 SSH 배포를 추가합니다.

Docker Compose 배포 검증 추가

자동 배포 후 상태 확인이 필요합니다.

확인:

docker compose ps

Healthcheck:

healthy

↓

배포 성공

실패:

unhealthy

↓

Rollback

Docker Compose Rollback 자동화

새로운 배포가 실패하면 이전 Version으로 돌아갑니다.

구조:

Version 2.0

↓

오류 발생

↓

Version 1.9 복구

방법:

Image Tag 사용:

app:2.0

app:1.9

배포:

image: app:1.9

Docker Compose Branch 기반 배포

실제 운영에서는 Branch별 환경을 나눕니다.

구조:

develop

↓

Development Server


main

↓

Production Server

Workflow:

branches:

  - main

의미:

main Push 시 Production 배포

Docker Compose CI/CD 보안 관리

중요:

SSH Key:

  • GitHub Secret 저장

Password:

  • Secret 사용

Server 접근:

  • IP 제한

Image:

  • Version 관리

구조:

Secret

↓

GitHub Actions

↓

Server

Docker Compose GitHub Actions 장애 대응

Workflow 실패

확인:

Actions

↓

Failed Job

↓

Log 확인

확인:

  • Docker Build 오류
  • Secret 오류
  • SSH 오류

SSH 연결 실패

확인:

  • Host
  • Username
  • Private Key
  • Firewall

Deploy 후 서비스 오류

확인:

docker compose ps

docker compose logs

Docker Compose GitHub Actions Best Practice

추천:

  • main Branch 보호
  • Secret 사용
  • Image Version 관리
  • Healthcheck 적용
  • Rollback 준비
  • Deploy Log 관리

최종 구조:

Developer

↓

GitHub

↓

GitHub Actions

↓

Docker Build

↓

Registry

↓

SSH Deploy

↓

Docker Compose

↓

Monitoring

자주 묻는 질문

GitHub Actions로 Docker Compose 배포가 가능한가요?

가능합니다.

실제 Production 환경에서도 많이 사용하는 방식입니다.

서버에 Git을 설치해야 하나요?

Registry 기반 배포라면 필요하지 않습니다.

Docker Image는 어디에 저장하나요?

Docker Hub, GitHub Container Registry, Private Registry 등을 사용할 수 있습니다.

자동 배포하면 위험하지 않나요?

Test, Healthcheck, Rollback 구조를 함께 구성하면 안정적으로 운영할 수 있습니다.

마무리

Docker Compose GitHub Actions 연동은 서버 운영 자동화를 위한 핵심 기술입니다.

최종 CI/CD 구조:

Git Push

↓

GitHub Actions

↓

Docker Build

↓

Image Registry

↓

Production Server

↓

Docker Compose Deploy

↓

Health Check

이 구조를 구축하면 개발자가 코드를 수정한 순간부터 Production 배포까지 자동화할 수 있습니다.

다음 글에서는 안정적인 배포 품질을 높이기 위한 Docker Compose 테스트 자동화 방법을 알아보겠습니다.

댓글 남기기