<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>배포 자동화 &#8211; 나다아루 &#8211; 기록하는 습관</title>
	<atom:link href="https://madscv.com/tag/%EB%B0%B0%ED%8F%AC-%EC%9E%90%EB%8F%99%ED%99%94/feed/" rel="self" type="application/rss+xml" />
	<link>https://madscv.com</link>
	<description></description>
	<lastBuildDate>Sat, 10 Jan 2026 06:37:50 +0000</lastBuildDate>
	<language>ko-KR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8</generator>

<image>
	<url>https://madscv.com/wp-content/uploads/2025/03/cropped-IMG_7070-32x32.png</url>
	<title>배포 자동화 &#8211; 나다아루 &#8211; 기록하는 습관</title>
	<link>https://madscv.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>순서대로 따라하는 Github Repo 생성부터 GHCR(GitHub Container Registry) 등록까지</title>
		<link>https://madscv.com/450/</link>
		
		<dc:creator><![CDATA[나루]]></dc:creator>
		<pubDate>Sat, 10 Jan 2026 06:37:45 +0000</pubDate>
				<category><![CDATA[시놀로지]]></category>
		<category><![CDATA[CI/CD]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[GHCR]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[GitHub Actions]]></category>
		<category><![CDATA[Synology]]></category>
		<category><![CDATA[개인 서버]]></category>
		<category><![CDATA[배포 자동화]]></category>
		<category><![CDATA[시놀로지 도커]]></category>
		<category><![CDATA[홈서버]]></category>
		<guid isPermaLink="false">https://madscv.com/?p=450</guid>

					<description><![CDATA[이 글은 코드를 GitHub에 올리기만 하면Docker 이미지가 자동으로 GHCR에 등록되는 흐름를 직접 만들어보는 따라하기 글이다. 0. 전체 흐름 미리 보기 우리가 만들 구조는 이렇다. 이제 하나씩 따라가 보자. 1️⃣ GitHub에서 앱용 Repository 만들기 먼저 GitHub 에서 컨테이너로 배포할 앱 전용 레포지토리를 만든다. Repository 생성 👉 생성 버튼 클릭 2️⃣ 최소한의 앱과 Dockerfile 준비 예시: 아주 ... <a title="순서대로 따라하는 Github Repo 생성부터 GHCR(GitHub Container Registry) 등록까지" class="read-more" href="https://madscv.com/450/" aria-label="순서대로 따라하는 Github Repo 생성부터 GHCR(GitHub Container Registry) 등록까지에 대해 더 자세히 알아보세요">더 읽기</a>]]></description>
										<content:encoded><![CDATA[
<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>이 글은 <strong>코드를 GitHub에 올리기만 하면<br>Docker 이미지가 자동으로 GHCR에 등록되는 흐름</strong>를 직접 만들어보는 따라하기 글이다.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">0. 전체 흐름 미리 보기</h3>



<p>우리가 만들 구조는 이렇다.</p>



<figure class="wp-block-image size-large is-resized"><img fetchpriority="high" decoding="async" width="1024" height="923" src="https://madscv.com/wp-content/uploads/2026/01/Pasted-image-20260110150456-1024x923.png" alt="" class="wp-image-447" style="width:533px;height:auto" srcset="https://madscv.com/wp-content/uploads/2026/01/Pasted-image-20260110150456-1024x923.png 1024w, https://madscv.com/wp-content/uploads/2026/01/Pasted-image-20260110150456-300x270.png 300w, https://madscv.com/wp-content/uploads/2026/01/Pasted-image-20260110150456-768x692.png 768w, https://madscv.com/wp-content/uploads/2026/01/Pasted-image-20260110150456.png 1400w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>이제 하나씩 따라가 보자.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">1&#x20e3; GitHub에서 앱용 Repository 만들기</h3>



<p>먼저 <strong>GitHub</strong> 에서 컨테이너로 배포할 앱 전용 레포지토리를 만든다.</p>



<h4 class="wp-block-heading">Repository 생성</h4>



<ol class="wp-block-list">
<li><p>GitHub 접속</p></li>



<li><p><code>New repository</code> 클릭</p></li>



<li><p>아래처럼 설정</p></li>
</ol>



<ul class="wp-block-list">
<li><p>Repository name: <code>my-first-ghcr-app</code></p></li>



<li><p>Public (처음엔 공개가 편함)</p></li>



<li><p><code>Add a README</code> 체크 <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p></li>
</ul>



<p><img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 생성 버튼 클릭</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">2&#x20e3; 최소한의 앱과 Dockerfile 준비</h3>



<h4 class="wp-block-heading">예시: 아주 간단한 웹앱 구조</h4>



<figure class="wp-block-image is-resized"><img decoding="async" src="https://madscv.com/wp-content/uploads/2026/01/Pasted-image-20260110151027.png" alt="Pasted image 20260110151027.png" style="width:531px;height:auto"/></figure>



<p></p>



<h4 class="wp-block-heading">index.html</h4>



<pre class="wp-block-code"><code>&lt;h1>Hello GHCR &#x1f44b;&lt;/h1> &lt;p>This app is running from a container.&lt;/p></code></pre>



<h4 class="wp-block-heading">Dockerfile</h4>



<pre class="wp-block-code"><code>FROM nginx:alpine COPY index.html /usr/share/nginx/html/index.html</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 지금은 **“컨테이너가 된다”**는 게 핵심이라<br>
앱은 최대한 단순하게 시작한다.</p>
</blockquote>



<h3 class="wp-block-heading">3&#x20e3; GitHub Actions로 자동 빌드 설정하기</h3>



<p>이제 핵심 단계다.<br><strong>push 하면 자동으로 GHCR에 이미지가 등록되도록</strong> 설정한다.</p>



<h4 class="wp-block-heading"><code>.github/workflows/docker.yml</code> 생성</h4>



<figure class="wp-block-image is-resized"><img decoding="async" src="https://madscv.com/wp-content/uploads/2026/01/Pasted-image-20260110151959.png" alt="Pasted image 20260110151959.png" style="width:455px;height:auto"/></figure>



<p></p>



<h4 class="wp-block-heading">docker.yml</h4>



<pre class="wp-block-code"><code>name: Build and Push to GHCR

on:
  push:
    branches: &#91; "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
</code></pre>



<p><img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> 커밋 &amp; 푸시</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">4&#x20e3; GHCR에 이미지가 자동 등록되는 순간</h3>



<p>푸시가 끝나면:</p>



<ol class="wp-block-list">
<li><p>GitHub → <code>Actions</code> 탭</p></li>



<li><p>워크플로우 실행 확인</p></li>



<li><p>성공하면 <img src="https://s.w.org/images/core/emoji/15.1.0/72x72/1f389.png" alt="🎉" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p></li>
</ol>



<h4 class="wp-block-heading">GHCR 확인 경로</h4>



<ul class="wp-block-list">
<li><p>GitHub 프로필</p></li>



<li><p><code>Packages</code> 탭</p></li>



<li><p><code>my-first-ghcr-app</code> 패키지 생성됨</p></li>
</ul>



<p>이미지 주소는 이렇게 된다:</p>



<pre class="wp-block-code"><code>ghcr.io/깃허브아이디/my-first-ghcr-app:latest</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">5&#x20e3; 이 이미지, 어디서든 실행 가능</h3>



<p>이제 이 이미지는:</p>



<ul class="wp-block-list">
<li><p>시놀로지 Container Manager</p></li>



<li><p>개인 서버</p></li>



<li><p>VPS</p></li>



<li><p>로컬 Docker</p></li>
</ul>



<p>어디서든 실행 가능하다.</p>



<pre class="wp-block-code"><code>docker pull ghcr.io/아이디/my-first-ghcr-app:latest docker run -d -p 8080:80 ghcr.io/아이디/my-first-ghcr-app:latest</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">6&#x20e3; 왜 이 방식이 좋은가</h3>



<p>이 구조의 핵심 장점은 딱 3가지다.</p>



<ol class="wp-block-list">
<li><p><strong>GitHub = 코드 + 이미지의 기준점</strong></p></li>



<li><p><strong>빌드 자동화 (사람 손 안 탐)</strong></p></li>



<li><p><strong>시놀로지 배포와 자연스럽게 연결</strong></p></li>
</ol>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>“이미지를 어디에 저장할까?”라는 고민이 사라진다.</p>
</blockquote>



<p>#GitHub #GHCR #Docker #GitHub Actions, #CI/CD<br>#Synology #시놀로지 도커 #배포 자동화<br>#개인 서버 #홈서버</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
