NestJS 및 VueJS 앱을 Dokploy로 배포하는 방법
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발, DevOps
대상자
중급 이상의 웹 개발자 및 DevOps 엔지니어. Docker, GitHub Actions, Dokploy 배포 프로세스에 대한 이해가 필요한 대상자.
핵심 요약
- Dockerfile의 다단계 빌드를 통해 이미지 크기 최적화:
base
,builder
,runner
단계로 나누어 생산성 향상 - GitHub Actions를 활용한 자동화된 이미지 빌드 및 Docker Hub에의 푸시:
docker buildx
와docker push
명령어 사용 - Dokploy를 통한 VPS 배포: 도메인 연결, SSL 인증서 자동 생성, 서비스 구성 간단한 UI 제공
섹션별 세부 요약
1. Dockerfile 구조 설계
base
단계:package.json
및package-lock.json
복사 후npm ci
로 의존성 설치builder
단계:dist
디렉토리 생성,npm run build
실행,npm ci --omit=dev
로 개발 의존성 제외runner
단계:dist
및node_modules
복사,node
명령어로 NestJS 백엔드 실행
2. 프론트엔드 Dockerfile 구성
- NGINX 기반
runner
단계:dist
파일 복사,nginx.conf
설정,8080
포트 노출 try_files
디렉토리 설정으로 정적 파일 서빙 가능
3. GitHub Actions 워크플로우 설정
workflow_dispatch
이벤트로 수동/자동 트리거 설정docker buildx build -f Dockerfile.prod
명령어로 이미지 생성 및docker push
로 Docker Hub에 푸시secrets.DOCKER_USERNAME
및secrets.DOCKER_PASSWORD
환경 변수 사용
4. Dokploy 배포 프로세스
- VPS에
curl -sSL | sh
명령어로 설치, Docker Swarm 클러스터 생성 - 도메인 연결: Web Server 설정에서 Let's Encrypt SSL 인증서 자동 생성
- Projects 탭에서 프로젝트 생성 후 Create Project 버튼 클릭
- Database 및 Backend 서비스 생성: 서비스 이름, DB 정보, Docker 이미지 지정
- External Host URL 기반 백엔드 서비스 구성, 도메인 설정(예:
api.your_domain.com
)
결론
Dokploy는 Docker 이미지 기반의 간단한 배포 프로세스를 제공하며, 환경 변수 설정과 도메인 연결이 필수적입니다. 또한 템플릿 기능을 통해 Supabase, Elasticsearch 등 외부 서비스와의 연동을 쉽게 할 수 있습니다. 개발자는 GitHub Actions를 통한 자동화된 빌드와 Dokploy의 UI 기반 배포를 병행해 CI/CD 흐름을 최적화해야 합니다.