Skip to content

1단계. 사전 준비

이 튜토리얼에서 사용할 샘플 레포지토리를 클론하고, 이미지 빌드에 필요한 설정을 확인합니다.


사전 조건

  • Docker Desktop 설치 및 실행 확인 (다운로드)
  • Make 설치 확인 (macOS는 기본 설치됨)
    make --version
    
  • Gitea 계정 및 레지스트리 접근 권한
  • Runway 플랫폼 프로젝트가 생성되어 있어야 합니다.

샘플 레포지토리 클론

이 튜토리얼에서는 아래 퍼블릭 레포지토리를 사용합니다.

git clone <SAMPLE_REPO_URL>
cd <REPO_NAME>

레포지토리 구조

샘플 레포지토리에는 이미지 빌드와 배포에 필요한 파일이 미리 포함되어 있습니다.

<REPO_NAME>/
├── docker/
│   └── Dockerfile          # 멀티 스테이지 빌드 설정
├── nginx/
│   └── conf.d/
│       └── default.conf    # nginx 서버 설정
├── Makefile                # 빌드 & 푸시 자동화 스크립트
└── docs/                   # 서비스 소스 파일 (배포할 콘텐츠)

Dockerfile

멀티 스테이지 빌드로 구성되어 있습니다.

  • 1단계 (builder): 소스 파일을 빌드하여 정적 파일 생성
  • 2단계 (nginx): 빌드 결과물을 nginx 이미지에 복사하여 서빙
# 1단계: 소스 빌드
FROM python:3.10 as builder
WORKDIR /app
COPY ./ ./
RUN pip install -r requirements.txt
RUN <BUILD_COMMAND>          # 예: mkdocs build

# 2단계: nginx로 서빙
FROM nginx:alpine
COPY nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /app/site/ /usr/share/nginx/html/

Makefile

docker-build-push-gitea 타겟이 이미지 빌드와 Gitea 레지스트리 푸시를 한 번에 처리합니다.

IMAGE_TAG   := <IMAGE_TAG>     # 예: 1.0.0
GITEA_IMAGE := <GITEA_HOST>/<PROJECT_ID>/<REPO>

docker-build-push-gitea:
    docker buildx build \
        --platform linux/amd64,linux/arm64 \
        --tag $(GITEA_IMAGE):$(IMAGE_TAG) \
        --file docker/Dockerfile \
        --push \
        .

Makefile 설정 수정

빌드 전에 Makefile 상단의 두 항목을 본인 환경에 맞게 수정합니다.

IMAGE_TAG   := <IMAGE_TAG>
GITEA_IMAGE := <GITEA_HOST>/<PROJECT_ID>/<REPO>
항목 설명 예시
IMAGE_TAG 이미지 버전 태그 1.0.0
GITEA_IMAGE Gitea 레지스트리 이미지 경로 gitea.{베이스 도메인}/my-project/my-app

<PROJECT_ID>는 Runway 프로젝트의 네임스페이스입니다. 프로젝트 설정 > 일반 > ID에서 확인할 수 있습니다.