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에서 확인할 수 있습니다.