Dockerfile 을 이용해서 프로젝트 빌드 및 실행 등을 구성할 수 있다. docker-compose 와 같이 활용하는데, 도커 이미지를 만들기 위해서 사용한다.
아래는 빌드 후 실행을 하는 구성 파일 예제 이다.
#빌드 작업 관련 코드. gradle 을 사용 할 거고, 8버전, jdk17 버전 이미지를 사용하겠다.
#그리고 이름을 builder 로 하겠다
FROM gradle:8-jdk17 AS builder
#루트의 app 디렉토리를 워킹 디렉토리로 설정하겠다
WORKDIR /app
#메인프로젝트 자체를 워킹 디렉토리인 app에 복사 (dockerfile이 프로젝트 루트에 위치)
COPY . .
#실제 gradle을 이용해 빌드하기 위해 권한 부여 및 빌드 실행
RUN chmod +x ./gradlew
RUN ./gradlew bootJar
#실행할때는 빌드 부산물이나 소스코드가 필요 없음. 따라서 새로운환경을 생성하여 실행하기위한 이미지 받기
FROM amazoncorretto:17-alpine
#위의 builder 를 통해 빌드한 결과물을 app.jar로 복사
COPY --from=builder /app/build/libs/빌드한파일명.jar /app.jar
#8080 포트 노출
EXPOSE 8080
ENV PROJECT_NAME=프로젝트명
ENV PROJECT_VERSION=버전명
ENV JVM_OPT=""
#이 도커 실행시 수행할 명령으를 구성하여 app.jar를 실행
ENTRYPOINT ["sh", "-c", "java $JVM_OPT -jar app.jar --spring.application.name=$PROJECT_NAME --app.version=$PROJECT_VERSION"]
이렇게 Dockerfile 을 생성 한 후, 빌드를 해줘야 한다.
- docker build -t <이미지이름>:<태그> <Dockerfile 위치>
- 만일 여기 이미지이름:태그 부분에 hub계정명/repository명:태그를 입력하게 되면, 추후 push 할때 해당 경로로 push 한다.
- (예 : 계정명이 testAccount 이고, repository 명이 simpleRepository 일 경우,
docker build -t testAccount/simpleRepository:태그 .) - Dockerfile 위치가 만일 현재 디렉토리일 경우 . 만 입력하면 된다.
- 빌드한 이미지를 허브에 업로드 하는 명령어
- 위에서 build 할때 이미지명을 허브에 있는 repository 경로에 맞추었다면, 자동으로 찾아서 올라간다.
- docker push 이미지명:태그
** 추가 : .dockerignore 를 통해 copy를 해 올때 필요없는 항목들을 제거하고 copy 할 수 있다.
** 중요 : 빌드 환경과 런타임 환경 CPU타입이 기본적으로 같아야 한다. (x86, arm64). buildx 를 이용하여 크로스플랫폼 빌드를 할 수도 있다.
'Docker' 카테고리의 다른 글
| Docker network (0) | 2025.11.12 |
|---|---|
| docker 이미지 AWS ECR에 올리기 (0) | 2025.11.07 |
| Docker compose (0) | 2025.11.06 |
| Docker 기본 명령어 (0) | 2025.11.06 |