도커와 톰캣 결합

Dokeowa Tomkaes Gyeolhab



Apache Tomcat은 ASF(Apache Software Foundation)에서 개발한 오픈 소스 웹 서버이자 서블릿 컨테이너입니다.

Tomcat은 Oracle의 Java Servlet 및 JavaServer Pages 사양을 구현하며 Java 코드를 실행할 수 있는 순수 Java HTTP 웹 서버 환경을 제공합니다.







이 튜토리얼에서는 Docker와 Tomcat을 결합하여 Tomcat을 컨테이너로 사용하여 Tomcat 'hello world' 애플리케이션을 배포하는 방법을 알아봅니다.



요구사항:

이 자습서에 제공된 지침과 코드를 성공적으로 따르고 사용하려면 다음이 있는지 확인하십시오.



    1. 호스트 머신에 Docker 엔진을 설치했습니다.
    2. Java 코드를 테스트하기 위해 컴퓨터에 Java JDK를 설치했습니다(선택 사항).
    3. 소스 코드 및 Docker 구성을 편집하는 텍스트 편집기

주어진 요구 사항이 충족되면 계속 진행하여 Docker를 사용하여 Tomcat 앱을 배포하는 방법을 배울 수 있습니다.





Docker에서 Tomcat 이미지 가져오기

다행히 Tomcat 애플리케이션을 실행하기 위한 모든 도구가 포함된 기본 이미지를 구성할 필요가 없습니다. Docker Hub의 Tomcat 이미지를 간단히 사용할 수 있습니다.

이미지를 가져오려면 다음과 같이 명령을 실행할 수 있습니다.



$ 도커 풀 톰캣


Hello World 애플리케이션 만들기

다음 단계는 'Hello World' 애플리케이션을 만드는 것입니다. 소스 코드를 저장할 디렉토리를 생성하고 해당 디렉토리로 이동하세요.

$ mkdir hello_world && CD hello_world


루트 디렉터리 안에 webapp 폴더를 만들고 그 안에 WEB-INF 폴더를 만듭니다.

디렉터리 구조는 다음과 같아야 합니다.

hello_world /
└── 웹앱
└── WEB-INF

디렉토리, 0 파일


그런 다음 WEB-INF 디렉터리로 이동하여 다음 코드를 사용하여 “web.xml” 파일을 만듭니다.

< ?xml 버전 = '1.0' 부호화 = 'UTF-8' ? >
< 웹앱 xmlns = 'http://xmlns.jcp.org/xml/ns/javaee'
xmlns: xsi = 'http://www.w3.org/2001/XMLSchema-instance'
xsi: 스키마 위치 = 'http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd'
버전 = '4.0' >
< 서블릿 >
< 서블릿 이름 > 헬로월드 서블릿 이름 >
< 서블릿 클래스 > HelloWorld서블릿 서블릿 클래스 >
서블릿 >
< 서블릿 매핑 >
< 서블릿 이름 > 헬로월드 서블릿 이름 >
< URL 패턴 >/ 안녕하세요 URL 패턴 >
서블릿 매핑 >
웹앱 >


파일을 저장하고 편집기를 닫습니다.

터미널 창으로 돌아가서 WEB-INF/classes 디렉토리 내에 'HelloWorldServlet.java'를 생성하십시오.

$ mkdir 클래스
$ 만지다 HelloWorldServlet.java


다음과 같이 애플리케이션의 내용을 추가합니다.

javax.servlet을 가져옵니다. * ;
javax.servlet.http를 가져옵니다. * ;
java.io를 가져옵니다. * ;

공개 클래스 HelloWorldServlet은 HttpServlet을 확장합니다. {
공공 무효 doGet ( HttpServletRequest 요청, HttpServletResponse 응답 )
ServletException, IOException이 발생합니다. {
response.setContentType ( '텍스트/html' ) ;
PrintWriter 출력 = response.getWriter ( ) ;
out.println ( '' ) ;
out.println ( 'Hello World 서블릿' ) ;
out.println ( '<본문>' ) ;
out.println ( '

안녕하세요, 세계!

'
) ;
out.println ( '' ) ;
}
}


이는 'Hello world'를 인쇄하는 기본 Tomcat 서블릿을 설정합니다.



Dockerfile 정의

다음 단계는 Dockerfile을 정의하여 'Hello World' 앱이 포함된 사용자 정의 이미지를 구축하는 것입니다.

루트 디렉터리 내에 'Dockerfile'이라는 새 파일을 만듭니다.







$ 만지다 ~ / hello_world / 도커파일


파일을 편집하고 다음과 같이 구성을 추가합니다.

# Tomcat 기본 이미지 설정
Tomcat에서:최신

# Hello World 애플리케이션을 Tomcat webapps 디렉토리에 복사합니다.
복사 . / 웹앱 / 우리 / 현지의 / 수코양이 / 웹앱 / 마이앱
# Tomcat용 포트 8080을 노출합니다.
폭로하다 8080


다음과 같은 디렉토리 레이아웃이 있어야 합니다.

hello_world
├── 도커파일
└── 웹앱
└── WEB-INF
├── 수업
│   └── HelloWorldServlet.java
└── web.xml

4 디렉토리, 파일

이미지 구축

다음으로, 다음 명령에 표시된 대로 사용자 정의 Tomcat 이미지를 빌드합니다.

$ 도커 빌드 -티 톰캣 앱 .


컨테이너 실행

이미지가 준비되면 다음과 같은 명령을 사용하여 이미지에서 컨테이너를 실행할 수 있습니다.

$ 도커 실행 -디 -피 8080 : 8080 --이름 Tomcat-컨테이너 Tomcat-앱


이전 단계에서 생성한 tomcat-app 이미지에서 Tomcat 컨테이너를 빌드하고 이를 호스트 시스템의 포트 8080에 바인딩해야 합니다.

애플리케이션에 액세스

웹 브라우저를 열고 다음으로 이동하십시오. . 'Hello, World!'가 표시되어야 합니다. 브라우저에 메시지가 표시됩니다.

결론

축하해요! Dockerized Tomcat 컨테이너에 'Hello World' 애플리케이션을 성공적으로 배포했습니다.