Docker

Dockerfile 구성 및 빌드(hub에 업로드)

Dean83 2025. 11. 6. 15:55

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