개발자는 번아웃 극복을 위해 9개월 전 작업했던 멀티플레이어 게임과 React 챌린지 코스 플랫폼을 단일 VPS에 배포하며 새로운 기능을 추가하고 있습니다. 🎮
하나의 VPS에 여러 애플리케이션(게임 웹사이트, 게임 서버, React 코스 플랫폼)을 Docker 및 Docker Compose를 사용하여 효율적으로 호스팅하는 방식을 채택했습니다. 🏠
각 애플리케이션별로 독립적인 docker-compose.yml 파일을 사용하여 컨테이너화하고, PostgreSQL 데이터베이스도 Docker 볼륨 마운트를 통해 관리하는 간소화된 배포 환경을 구축했습니다. 🐳
Caddy를 리버스 프록시로 사용하여 여러 도메인(예: survivethenight.com, beginnerreactchallenges.com)의 트래픽을 VPS의 적절한 Docker 컨테이너로 라우팅하며, HTTPS 설정을 자동으로 처리합니다. 🛡️
모든 애플리케이션 컨테이너와 Caddy 인스턴스가 web이라는 외부 Docker 네트워크를 공유하여 컨테이너 간의 원활한 통신 및 Caddy의 트래픽 라우팅을 가능하게 합니다. 🌐
main 브랜치에 푸시될 때마다 GitHub Actions가 appleboy/ssh-action을 통해 VPS에 SSH 접속하여 최신 코드를 git pull하고 docker compose up --build -d 명령으로 애플리케이션을 재배포하는 간단한 CI/CD를 사용합니다. 🚀
GitHub Actions에서 SSH 키를 사용하여 VPS에 직접 접근하는 방식은 사이드 프로젝트에는 적합하지만, 보안상 더 안전한 방법(예: 이미지 빌드 후 레지스트리 푸시)이 존재하며, VPS에서 직접 이미지 빌드 시 리소스 소모로 인한 성능 저하 가능성을 인지하고 있습니다. ⚠️
복잡한 CI/CD 파이프라인이나 Kubernetes 대신, 소규모 사이드 프로젝트나 저트래픽 사이트의 경우 수동 설정과 간단한 스크립트 기반의 배포가 이해하기 쉽고 효율적일 수 있음을 강조합니다. ✨
단일 VPS에 여러 Docker 애플리케이션을 배포하는 더 나은 방법(예: Docker Stack)에 대한 커뮤니티의 의견을 구하며, Kubernetes는 현재 프로젝트에 과하다고 판단합니다. 🗣️