Spring Boot 애플리케이션을 AWS EC2(t4g.small) 환경에 Docker Compose를 활용하여 배포함. 특히 로컬 환경과 서버 환경의 CPU 아키텍처 차이(x86 vs ARM64)로 인한 문제를 해결하며 멀티 플랫폼 빌드의 중요성을 학습함.
1. VPC 및 인프라 설계
2. Spring Boot 운영 설정
3. Docker를 이용한 가상화 배포
현상: EC2(t4g.small)에서 docker-compose up 실행 시 이미지를 불러오지 못하거나 실행 시 exec format error 발생.
원인: 로컬 PC(Intel x86)와 EC2 서버(AWS Graviton ARM64)의 CPU 아키텍처가 불일치하여 발생한 문제.
해결: Docker 이미지 빌드 시 --platform linux/arm64 옵션을 추가하여 서버 아키텍처에 맞는 바이너리 생성.
docker-compose.yml 내 MySQL 이미지 설정에 platform: linux/arm64 명시.
운영 환경의 중요성: 로컬에서 잘 돌아가는 코드가 서버에서 실패할 수 있는 변수(아키텍처, 환경 변수 등)가 많음을 체감함.
Docker의 위력: 환경이 바뀌어도 컨테이너 설정만 잘 맞추면 어디서든 동일하게 구동할 수 있다는 점이 강력함을 배움.
Health Check: 단순히 서버를 띄우는 것보다, Actuator를 통해 실제 서비스 가능 여부를 체크하는 과정이 운영의 필수 요소임을 알게 됨.