‘내 컴퓨터에서는 작동한다’는 말에 작별: Docker를 사용한 Spring Boot와 PostgreSQL

발행: (2026년 1월 16일 오후 09:07 GMT+9)
4 min read
원문: Dev.to

Source: Dev.to

소개

Java 애플리케이션을 컨테이너화 공부를 시작했을 때, 가장 큰 이점은 단순히 애플리케이션을 패키징하는 것이 아니라 전체 환경을 코드로 만드는 것이라는 점이 명확해졌습니다. 이 글에서는 두 개의 파일만으로 Spring Boot + PostgreSQL 애플리케이션을 실행할 수 있는 방법을 보여줍니다. 로컬에 Java, 데이터베이스, 애플리케이션 서버를 설치할 필요가 없습니다.

백엔드 개발에서 흔히 겪는 문제

백엔드 작업을 하다 보면 최소한 다음 상황 중 하나는 경험했을 것입니다:

  • “내 컴퓨터에서는 동작해”
  • 환경마다 다른 Java 버전
  • 수동으로 설정된 데이터베이스
  • 새로운 팀원이 합류할 때 긴 설정 과정

컨테이너화는 바로 이 문제들을 해결합니다: 환경이 재현 가능하고 버전 관리될 수 있게 됩니다.

Dockerfile

# Dockerfile
FROM eclipse-temurin:17-jdk
WORKDIR /app
COPY target/app.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]

Dockerfile이 정의하는 내용:

  • 사용할 Java 버전 (eclipse-temurin:17-jdk);
  • 컨테이너 안에서 애플리케이션이 위치할 경로 (/app);
  • 애플리케이션을 시작하는 방법 (java -jar app.jar).

docker‑compose.yml

# docker-compose.yml
version: "3.8"

services:
  db:
    image: postgres:15
    environment:
      POSTGRES_DB: appdb
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
    ports:
      - "5432:5432"

  app:
    build: .
    ports:
      - "8080:8080"
    environment:
      SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/appdb
      SPRING_DATASOURCE_USERNAME: user
      SPRING_DATASOURCE_PASSWORD: pass
    depends_on:
      - db

이 파일에서 정의하는 내용:

  • PostgreSQL용 컨테이너 하나;
  • Spring Boot 애플리케이션용 컨테이너 하나;
  • 연결에 필요한 환경 변수;
  • 서비스 간 통신 (appdb에 의존).

모든 것을 한 번에 실행하려면 다음 명령을 사용합니다:

docker compose up

장점

  • 환경 설정 문제가 사라집니다.
  • 새로운 개발자 온보딩이 간단해집니다.
  • CI/CD 파이프라인이 예측 가능해집니다.
  • 인프라가 버전 관리되는 코드가 됩니다.

컨테이너화는 단순히 Docker에 국한되지 않습니다; 신뢰성, 이식성, 표준화에 관한 것입니다. 프로젝트 전체를 파일로 기술할 수 있게 되면 개발 수준이 한 단계 올라갑니다. 이 모델은 다음과 같은 기반이 됩니다:

  • 마이크로서비스
  • Kubernetes
  • 클라우드 기반 최신 아키텍처
  • 지속적 배포

그리고 모든 것은 Dockerfiledocker-compose.yml 하나로 시작됩니다.

Back to Blog

관련 글

더 보기 »