본문 바로가기
카테고리 없음

Vercel 배포 시 Docker MySQL을 그대로 사용할 수 있을까?

by ginny. 2025. 3. 15.

불가능합니다.

Vercel은 정적 사이트와 서버리스(Serverless) 환경에 최적화된 플랫폼이기 때문에, 독립적인 Docker 컨테이너를 실행할 수 있는 기능을 제공하지 않습니다. 

 

그러면 Vercel에서 어떻게 DB를 사용할까?

MySQL을 직접 호스팅해야 합니다.

Vercel에서는 로컬 Docker MySQL을 직접 사용할 수 없고, 별도의 데이터베이스 호스팅 서비스가 필요합니다.

 

1. 클라우드 MySQL (가장 일반적인 해결책)

- PlanetScale, Supabase, AWS RDS, Google Cloud SQL, Railway 같은 클라우드 MySQL 서비스를 이용

- 외부에서 접근 가능한 MySQL을 설정하고, Vercel의 .env 파일에서 해당 DB를 사용하도록 설정

 

2. Vercel KV, Upstash 같은 Serverless DB 사용

- Vercel의 공식 데이터베이스 옵션인 Vercel KVUpstash를 사용
- 완전한 MySQL은 아니지만 간단한 Key-Value 저장소를 사용할 수 있음

 

3. 외부 서버에서 MySQL을 직접 호스팅 (비추천)

- 개인 서버 (VPS, 온프레미스)에서 MySQL을 실행하고, Vercel에서 해당 서버로 연결
- 하지만 MySQL 포트를 공개하면 보안 문제가 발생할 수 있어 비추천 (VPN 사용, Cloudflare Tunnel 로 안전한 연결 설정)

- 클라우드 MySQL을 사용하는 것이 더 안전하고 간편함.

 

 

 

Vercel이 Docker 실행을 지원하지 않는 이유  

 

1. Vercel의 배포 환경은 Serverless 환경

  • Vercel은 AWS Lambda 기반의 서버리스 환경을 사용하기 때문에, 컨테이너를 유지할 수 있는 환경이 아님.
  • 즉, Vercel에서는 실행 중인 컨테이너를 계속 유지할 수 없음.

2. Vercel의 파일 시스템은 읽기 전용

  • MySQL은 데이터를 디스크에 저장하는데, Vercel은 읽기 전용(read-only) 파일 시스템을 사용하므로 DB 파일을 저장할 수 없음.
  • 예를 들어, docker-compose를 실행해도 컨테이너가 데이터 파일을 저장할 수 없어서 DB가 정상적으로 동작하지 않음.

3. Vercel은 장기 실행 프로세스를 지원하지 않음

  • Docker MySQL을 실행하려면 MySQL 프로세스가 계속 실행되어야 하지만, Vercel의 서버리스 환경에서는 특정 요청이 끝나면 서버가 종료됨.
  • 즉, MySQL을 실행하는 컨테이너를 유지할 방법이 없음.

 

댓글