PodMan Desktop을 이용해서 이미지 만들기

브로디·2024년 1월 20일
0

PodMan Desktop을 이용해서 이미지 만들기

// 베이스 이미지. 이를 이용해서 이미지를 만들겠다.
FROM eclipse-temurin:17-jdk-jammy
// 실행을 시작할 때 /app 경로부터 시작하겠다.
WORKDIR /app
// 이 컨테이너는 5005번 포트로 접근할 수 있다. 
EXPOSE 5005
// 현재 WORKDIR에 있는 mvn폴더를 이미지의 WORKDIR경로에 mvn이라는 이름으로 복사한다.
COPY .mvn/ .mvn
// mvnw와 pom.xml파일을 WORKDIR 경로에 복사한다.
COPY mvnw pom.xml ./
// mvnw를 실행할 수 있도록 만든다.
RUN chmod +x mvnw
// mvnw의 의존성을 추가한다.
RUN ./mvnw dependency:resolve
// src를 WORKDIR의 src에 복사한다.
COPY src ./src
// mvnw라는 메이븐 wrapper를 이용해서 spring-boot를 실행한다.
CMD ["./mvnw", "spring-boot:run"]

윈도우에서 WSL을 설치함으로써 리눅스 기능을 이용할 수 있다. WSL은 경량의 VM이라고 생각하면 됨. 이 안에서 리눅스 명령어를 사용하여 컨테이너 이미지를 만들 수 있다. 이게 Podman Desktop에서 일어난다.

이곳에서 Build를 눌러서 Container파일을 참조해서 빌드를 누르면 Container파일에 맞게 이미지가 생성이 된다. 빌드가 완료되고 실행시킬 때 호스트 port와 expose를 통해서 열어준 port를 매핑시켜주어야 컨테이너에 접근할 수 있다.

그리고 이 컨테이너안의 앱이 스프링 앱이라고 가정했을 때 스프링 앱은 톰캣을 내장하고 있다. 이 톰캣의 포트가 8080이라면 접근이 불가하다. 왜냐면 5005문으로 들어왔는데 8080문으로 연결하는 부분이 없기 때문이다. 그래서 동일하게해야 접근이 가능하다.

정리하면 호스트 포트와 컨테이너 포트를 연결하고 컨테이너 포트와 내부 톰캣의 포트를 동일시해야 웹에 접근할 수 있다.

profile
햅삐햅삐 데이

0개의 댓글