Cloud/Kubernetes

[Kubernetes] Dockerfile을 이용한 Tomcat:9 이미지 만들기

Piracoon 2021. 3. 29. 00:00

docker hub에는 수 많은 미리 만들어진 이미지들을 사용할 수 있습니다. 하지만, Image들을 직접 만들어 보고 띄어 보고자 하여 진행을 하게 되었습니다. 


진행에 앞서, Dockerfile의 기본적인 형태에 대해 알아 보겠습니다.

 

  • FROM : 이미지를 생성할 때 사용할 기반 이미지를 지정한다. 예제에서는 openjdk:8-jdk 이미지를 사용했다.
  • RUN : 이미지를 생성할 때 실행할 코드를 지정한다. 예제에서는 패키지를 설치하고 파일 권한을 변경하기 위해 RUN을 사용했다.
  • WORKDIR : 작업 디렉토리를 지정한다. 해당 디렉토리가 없으면 새로 생성한다. 작업 디렉토리를 지정하면 그 이후 명령어는 해당 디렉토리를 기준으로 동작한다.
  • COPY : 파일이나 폴더를 이미지에 복사한다. 위 코드에서 두 번째 COPY 메서드는 entrypoint.sh 파일을 이미지에 run.sh 이름으로 복사한다. 상대 경로를 사용할 경우 WORKDIR로 지정한 디렉토리를 기준으로 복사한다.
  • ENV : 이미지에서 사용할 환경 변수 값을 지정한다. 위 코드는 PROFILE 환경 변수의 값으로 local을 지정했는데 이 경우 컨테이너를 생성할 때 PROFILE 환경 변수를 따로 지정하지 않으면 local을 기본 값으로 사용한다.
  • ENTRYPOINT : 컨테이너를 구동할 때 실행할 명령어를 지정한다. 위에서는 run.sh을 실행하도록 설정했다.

FROM openjdk:8-jdk
MAINTAINER tmax


# 환경 변수 및 작업 경로

ENV CATALINA_HOME /usr/local/tomcat9
ENV PATH $CATALINA_HOME/tomcat9/bin:$PATH
WORKDIR /usr/local


# 패키지 설치 wget은 톰캣 설치 파일 다운로드 위한

RUN apt-get update -y && apt-get install -y --no-install-recommends && apt-get install -y stress && apt-get install -y wget ca-certificates && apt-get install -y gnupg dirmngr


# 톰캣 설치 파일 다운로드 실행 및 압축해제

RUN wget https://downloads.apache.org/tomcat/tomcat-9/v9.0.44/bin/apache-tomcat-9.0.44.tar.gz
RUN tar -xvzf apache-tomcat-9.0.44.tar.gz
RUN mv apache-tomcat-9.0.44 tomcat9

WORKDIR ${CATALINA_HOME}

RUN mv webapps webapps.org
RUN mkdir webapps

WORKDIR ${CATALINA_HOME}/webapps


# 컨테이너에서 사용할 포트

EXPOSE 8080


# 설정 완료 후 실행

ENTRYPOINT ["./bin/catalina.sh", "run"]

기본적으로 8080포트를 오픈해 주었으며, deployment를 생성하였을 때 8080포트를 컨테이너 상에서 오픈을 해주었습니다. 

 

Docker 이미지를 생성할때 아래서 위로 layer가 생성 되므로 패키지 설치를 먼저 하고, 최대한 손을 대지 않고 작업하는 편이 빌드 시에 좀 더 효율적으로 사용이 가능할 것입니다.

 

docker build -t tomcat .

 

생성한 tomcat 이미지를 가지고 띄운 container