Spring Boot 웹 애플리케이션을 컨테이너화 하는 이전 실습 단계에서 환경변수 설정이 되지 않아 웹이 배포되지 않는 문제가 발생했었다.
필자의 Spring Boot application.yml을 보면 아래와 같이 보안에 민감한 정보들은 하드코딩 하지 않고, 환경변수를 사용하는 모습을 볼 수 있다.
이 환경변수 값들을 컨테이너에 적용시키기 위해서 사용하는것이 Docer Compose가 되겠다.
Docker Compose란?
Docker Compose는 여러 컨테이너 기반 서비스를 정의하고 실행하기 위한 도구로, 주로 개발 및 테스트 환경에서 사용된다.
특히 이번 실습 단계에서는 설정된 내용을 기반으로 한 번의 명령어로 손쉽게 배포하고 관리하는 실습을 진행한다고 보면 된다.

이번에도 마찬가지로 프로젝트 최상위 디렉터리에 'docker-compse.yml'파일을 만들어준다.
파일명은 임의로 지정할 수 없다. Docker Compose가 기본적으로 이 이름을 인식하고 사용하기 때문이다.
이 외에도 docker-compose.yaml, compose.yml, compose,yaml이 가능하다고 한다.
compose파일은 네임스페이스 방식을 사용한다.
services:
이것은 Docker Compose에서 실행할 컨테이너 서비스를 정의하는 섹션이다.
my-spring-app:
서비스 이름은 임의로 지정이 가능하다.
image:
생성할 이미지의 이름 및 태그를 기재한다.
ports:
왼쪽은 호스트(로컬PC)의 포트, 오른쪽은 컨테이너 포트.
environment:
환경변수 설정
그리고 Docker Compose를 사용하면 아래와 같은 docker run 명령어로 실행할 필요가 없어진다.
| docker run -p 8080:8080 my-spring-app:v1 |
이미 실행에 필요한 정의들이 모두 docker-compse.yml에 존재하기 때문이다.
파일 작성을 마쳤다면 아래 명령어로 이미지를 다시 빌드해준다.
| docker build -t my-spring-app:v1 . |
그리고 이제는 Docker Compose로 컨테이너를 생성 및 실행하게 된다. 그러므로 아래 명령어를 입력한다.
| docker-compose up -d |


그런데 무슨일일까.. 컨테이너가 작동되다가 멈췄다.
아무래도 웹 애플리케이션이 실행되는 과정에서 오류가 발생한것이 아닐까 싶다.
환경변수 말고도 다른 문제가 있는것같다.
이럴 때는 아래 명령어로 로그를 확인해주면 된다.
| docker-compose logs -f |


아..ㅡ.ㅡㅋ; 필자는 DB 서버는 아직 로컬PC의 VM에 있기 때문에 이것을 켜줬어야했는데
꺼져있었던게 문제였다.

부랴부랴 다시 켜주고,

다시 실행을 해주니 실행상태가 잘 유지된다!

접속도 잘 된다!
'실습 > Docker' 카테고리의 다른 글
| 실습4. NHN Container Registry에 이미지 빌드 및 업로드 (0) | 2025.06.26 |
|---|---|
| 실습2. Spring boot 웹 애플리케이션 컨테이너화 (0) | 2025.06.26 |
| 실습1. Docker 설치(Windows) (0) | 2025.06.26 |