이 글은 코드를 GitHub에 올리기만 하면
Docker 이미지가 자동으로 GHCR에 등록되는 흐름를 직접 만들어보는 따라하기 글이다.
0. 전체 흐름 미리 보기
우리가 만들 구조는 이렇다.

이제 하나씩 따라가 보자.
1️⃣ GitHub에서 앱용 Repository 만들기
먼저 GitHub 에서 컨테이너로 배포할 앱 전용 레포지토리를 만든다.
Repository 생성
GitHub 접속
New repository클릭아래처럼 설정
Repository name:
my-first-ghcr-appPublic (처음엔 공개가 편함)
Add a README체크 ✅
👉 생성 버튼 클릭
2️⃣ 최소한의 앱과 Dockerfile 준비
예시: 아주 간단한 웹앱 구조

index.html
<h1>Hello GHCR 👋</h1> <p>This app is running from a container.</p>
Dockerfile
FROM nginx:alpine COPY index.html /usr/share/nginx/html/index.html
💡 지금은 **“컨테이너가 된다”**는 게 핵심이라
앱은 최대한 단순하게 시작한다.
3️⃣ GitHub Actions로 자동 빌드 설정하기
이제 핵심 단계다.
push 하면 자동으로 GHCR에 이미지가 등록되도록 설정한다.
.github/workflows/docker.yml 생성

docker.yml
name: Build and Push to GHCR
on:
push:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and Push
uses: docker/build-push-action@v5
with:
push: true
tags: ghcr.io/${{ github.actor }}/my-first-ghcr-app:latest
👉 커밋 & 푸시
4️⃣ GHCR에 이미지가 자동 등록되는 순간
푸시가 끝나면:
GitHub →
Actions탭워크플로우 실행 확인
성공하면 🎉
GHCR 확인 경로
GitHub 프로필
Packages탭my-first-ghcr-app패키지 생성됨
이미지 주소는 이렇게 된다:
ghcr.io/깃허브아이디/my-first-ghcr-app:latest
5️⃣ 이 이미지, 어디서든 실행 가능
이제 이 이미지는:
시놀로지 Container Manager
개인 서버
VPS
로컬 Docker
어디서든 실행 가능하다.
docker pull ghcr.io/아이디/my-first-ghcr-app:latest docker run -d -p 8080:80 ghcr.io/아이디/my-first-ghcr-app:latest
6️⃣ 왜 이 방식이 좋은가
이 구조의 핵심 장점은 딱 3가지다.
GitHub = 코드 + 이미지의 기준점
빌드 자동화 (사람 손 안 탐)
시놀로지 배포와 자연스럽게 연결
“이미지를 어디에 저장할까?”라는 고민이 사라진다.
#GitHub #GHCR #Docker #GitHub Actions, #CI/CD
#Synology #시놀로지 도커 #배포 자동화
#개인 서버 #홈서버