JS Star 블로그

기억보다는 기록을✏️ 머신러닝, 웹개발, 물리학을 공부했고 계속 배워가고 있습니다.
📌 기존에 포스팅하던 블로그에서 포스트를 옮기는 중입니다.

Docker(도커)로 톰캣 서버 띄우기

22 Jun 2021 » cloud

Dockerfile 만들기

톰캣을 띄우기 위해서 jdk와 톰캣을 다운로드 받도록 Dockerfile을 작성하자.

Dockerfile은 도커 이미지를 만들기 위한 레시피라고 생각하면 된다.

기본적으로 OS는 centos7을 사용하기로 했다. centos7 도커 이미지를 base로 jdk, 톰캣을 설치하면 된다. 아래와 같이 Dockerfile을 작성하자.

# root 권한 부여
USER root
WORKDIR /home

# apps 폴더 생성
RUN mkdir /home/apps

# wget 설치
RUN yum install -y wget
# jdk 설치
COPY jdk-7u80-linux-x64.tar.gz /home/apps
RUN tar zxf /home/apps/jdk-7u80-linux-x64.tar.gz -C /home/apps
# tomcat 설치
RUN wget -P /home/apps/ https://archive.apache.org/dist/tomcat/tomcat-7/v7.0.68/bin/apache-tomcat-7.0.68.tar.gz
RUN tar zxf /home/apps/apache-tomcat-7.0.68.tar.gz -C /home/apps

# jdk 환경변수 등록
RUN export JAVA_HOME=/home/apps/jdk1.7.0_80
RUN export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
RUN export PATH=$PATH:/home/apps/jdk1.7.0_80/bin

EXPOSE 9090

jdk는 이제 curl이나 wget으로 설치가 불가능한 것 같아서 Dockerfile과 같은 폴더에 압축파일로 받아두고 COPY 명령어롤 통해 컨테이너 생성시 로컬 -> 컨테이너 로 복사하였다.

환경변수 설정은 기존 bin에 있는 바이너리파일들을 실행할 수 있도록 하고, 추가로 java 명령어도 먹히도록 $PATH: 뒤에 java 경로도 추가하였다.

포트 9090을 열어둔 것은 컨테이너 포트를 열어둔 것인데, 추후에 컨테이너 접근시 해당 포트로만 접근할 수 있도록 열어둔 것이다.

이미지 생성

Dockerfile을 토대로 이미지를 생성하려면 아래와 같이 커맨드를 실행한다.

docker build --tag tomcat:0.1 .
distribution
이미지 생성 중

이제 docker images 명령어를 치면 tomcat:0.1 이미지가 생성된 것을 확인할 수 있다.

컨테이너를 올릴 때, 컨테이너 안에 있는 톰캣 포트랑 외부에서 접근할 포트를 연결시킨다. 아래 그림과 같이 선 꼽듯이 포트를 연결하는 것이다.

distribution
요청이 유기적으로 이어질 수 있도록 포트를 열고 연결시켜주는 것이 중요하다.

톰캣 포트는 보통 8080을 사용한다. 그리고 외부에서 8090 포트를 통해 톰캣 8080으로 접근하도록 해주려면 아래와 같이 컨테이너를 올리면 된다.

$ docker run -d -it -p 8009:8080 --name tomcat_test tomcat:0.1 

이제 컨테이너에 들어가서 톰캣을 실행시켜 준다.

$ docker exec -it tomcat_test /bin/bash
[root@... bin] cd /home/apps/apache-tomcat-7.0.68/bin
[root@... bin] ./startup.sh

이제 브라우저에서 localhost:8009 로 접근하면 고양이를 만날 수 있다.

distribution
톰캣 서버가 정상적으로 localhost:8009의 요청을 받고 있다.

Related Posts