dockerfile 내용
# 1단계: 빌드
FROM gradle:8.14-jdk17 AS build
WORKDIR /app
COPY . .
RUN gradle build -x test
# 2단계: 실행
FROM eclipse-temurin:17-jre-alpine
WORKDIR /app
COPY --from=build /app/build/libs/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app/app.jar"]
compose.yml 파일 내용
services:
app:
build:
context: .
ports:
- "8080:8080"
dockerfile이 위치한 곳에서 cmd창에
docker compose build --no-cache
docker-compose.yml이 여러가지 dockerfile을 띄워주는 용도로 알고 있었는데 잘못 알고 있었다.
compose.yml은 여러 컨테이너를 하나의 애플리케이션으로, 실행 단위로 정의하는 도구다.
따라서 dockerfile이 하나라도 copmose를 쓰는 것이 이상한 일은 아니다.
Dockerfile 1개 → docker run
Dockerfile 여러 개 → docker compose
이런 모양이 아니라는 것.
dockerfile은 '이 컨테이너를 어떻게 만들것인가'에 관한 것이다.
- 어떤 OS를 쓸건지?
- 어떤 JDK를 쓸건지?
- 어떤 파일을 복사하고
- 어떤 명령으로 실행할건지.
즉 이미지를 제작하기 위헌 설명서 같은 것...
Spring Boot 앱을
Java 17로
8080 포트에서
실행한다
그렇다면 docker-compose.yml은 뭘까
"이 컨테이너를 어떤 환경에서 어떻게 실행할것인가"
- 포트
- 환경변수
- 네트워크
- 볼륨
- 의존 관계
- 실행 순서
이 Spring 앱을
포트 8080으로 노출하고
개발 환경에서
한 번에 실행한다
이 앱을 어떻게 실행할지에 대해 정의하는 것이다.
그리고 앱은 점점 확장되기 때문에(Spring + DB + Redis + Kafka + Mock server)
이것들의 실행 스크립트를 모아두는 것이다.
'┝ framework > ┎ Spring' 카테고리의 다른 글
| spring webFlux의 실행모델 (0) | 2026.01.19 |
|---|---|
| spring security >>> access denied (0) | 2026.01.14 |
| [testcode] webClient의 retryWhen testcode 작성하기 (0) | 2025.12.26 |
| MockWebServer.class의 TruncationBuffer의 timeout()함수 (1) | 2025.12.26 |
| timeout 관련 assertion (0) | 2025.12.26 |