🐋 로컬에서 Docker로 배포하기
2025. 5. 26. 19:46

0. Docke로 배포하기 위한 필수 파일

  • `Dockerfile`
    • Spring Boot 애플리케이션을 이미지로 빌드하기 위한 설정 파일
    • 내가 작성한 Dockerfile 코드를 예시로 첨부함
FROM eclipse-temurin:17-jre
WORKDIR /app
COPY build/libs/*.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
  • `docker-compose.yml`
    • 여러 컨테이너를 묶을 때 사용
    • 애플리케이션 실행에 필요한 컨테이너들을 정의하고 동시에 실행할 수 있도록 하는 설정 파일
    • 내가 작성한 코드 일부를 예시로 첨부함
version: "3.8"
services:
  app:
    build: .
    ports:
      - "8080:8080"
    environment:
      - SPRING_PROFILES_ACTIVE=docker
    env_file:
      - .env
  • + 혹시 필요하다면 `.dockerignore`
    • Docker가 이미지를 빌드할 때 컨텍스트에 포함하지 않을 파일/폴더 목록 설정
    • Docker가 불필요한 파일까지 복사해서 이미지에 포함시키지 않도록
    • 내가 작성한 코드를 예시로 첨부함
[.dockerignore]
.gradle
.idea
.gitignore

1. Docker Desktop 실행

// Docker Desktop 정상 실행 여부 확인
docker info

2. Docker 기반 서비스 기동 단계

// 1. 프로젝트 디렉토리로 이동
cd ~ 현재파일

// 2. 기존의 build 파일 삭제! (기존 파일의 버전 모르니까)

// 3. Spring Boot 앱 빌드 (jar 생성)
./gradlew build

// 4. Docker 이미지 빌드
docker-compose build

// 5. 백그라운드에서 컨테이너 실행
docker-compose up -d
# docker-compose up -d --build (Dockerfile 또는 설정 변경시 --build 추가)

// 6. 현재 실행중인 컨테이너 확인
docker ps

// 7. spring boot 앱 로그 출력 (Tomcat started on port(s): 8080 로그가 출력되야 함)
docker-compose logs -f app

// 로그에서 빠져나오기
ctrl + c

3. 애플리케이션 실행 확인

  • intelliJ 없이 실행 확인
  • 정상적으로 열리면 Docker 만으로 앱이 구동된 것
// 브라우저에서 접속
http://localhost:8080

localhost에서 접속 성공!
Docker Desktop에서도 컨테이너 실행 확인
Docker desktop에서 실행 log 확인


🌕회고

로컬에서 배포를 먼저 겪어봐야 aws에서 배포하는 단계를 이해할거라고 하신 튜터님들의 조언을 따라 로컬에서 먼저 배포를 진행해보았다. 덕분에 빌드되고, 이미지 생성 단계를 거쳐서 컨테이너가 실행되기까지의 명령어의 흐름을 이해할 수  있었다!

LIST