Pagsamahin ang Docker at Tomcat

Pagsamahin Ang Docker At Tomcat



Ang Apache Tomcat ay isang open-source na web server at servlet container na binuo ng Apache Software Foundation (ASF).

Ipinapatupad ng Tomcat ang Java Servlet at ang mga detalye ng JavaServer Pages mula sa Oracle at nagbibigay ito ng purong Java HTTP web server environment para tumakbo ang Java code.







Sa tutorial na ito, matututunan natin kung paano pagsamahin ang Docker at Tomcat upang mag-deploy ng isang Tomcat na 'hello world' na application gamit ang Tomcat bilang isang lalagyan.



Mga kinakailangan:

Upang matagumpay na sundin at magamit ang mga tagubilin at ang code na ibinigay sa tutorial na ito, tiyaking mayroon kang sumusunod:



    1. Naka-install na Docker Engine sa iyong host machine
    2. Nag-install ng Java JDK sa iyong makina upang subukan ang iyong Java code (opsyonal)
    3. Isang text editor upang i-edit ang source code at mga configuration ng Docker

Sa mga ibinigay na kinakailangan, maaari tayong magpatuloy at matutunan kung paano mag-deploy ng Tomcat app gamit ang Docker.





Hilahin ang Tomcat Image sa Docker

Sa kabutihang palad, hindi namin kailangang i-configure ang isang batayang imahe na naglalaman ng lahat ng mga tool upang magpatakbo ng isang Tomcat application. Magagamit lang natin ang larawang Tomcat mula sa Docker Hub.

Upang hilahin ang imahe, maaari naming patakbuhin ang command tulad ng sumusunod:



$ docker pull tomcat


Gumawa ng Hello World Application

Ang susunod na hakbang ay upang lumikha ng 'Hello World' na application. Magsimula sa pamamagitan ng paglikha ng isang direktoryo upang iimbak ang iyong source code at mag-navigate sa direktoryo.

$ mkdir hello_world && cd hello_world


Sa loob ng root directory, lumikha ng webapp folder at lumikha ng WEB-INF folder sa loob nito.

Ang istraktura ng iyong direktoryo ay dapat magmukhang ganito:

hello_world /
└── webapp
└── WEB-INF

3 mga direktoryo, 0 mga file


Susunod, mag-navigate sa direktoryo ng WEB-INF at lumikha ng 'web.xml' file na may sumusunod na code:

< ?xml bersyon = '1.0' encoding = 'UTF-8' ? >
< web-app xmlns = 'http://xmlns.jcp.org/xml/ns/javaee'
xmlns: xsi = 'http://www.w3.org/2001/XMLSchema-instance'
xsi: schemaLocation = 'http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd'
bersyon = '4.0' >
< servlet >
< servlet-name > HelloWorld servlet-name >
< servlet-class > HelloWorldServlet servlet-class >
servlet >
< servlet-mapping >
< servlet-name > HelloWorld servlet-name >
< url-pattern >/ Kamusta url-pattern >
servlet-mapping >
web-app >


I-save ang file at isara ang editor.

Bumalik sa iyong terminal Window, lumikha ng 'HelloWorldServlet.java' sa loob ng direktoryo ng WEB-INF/classes.

$ mkdir mga klase
$ hawakan HelloWorldServlet.java


Idagdag ang mga nilalaman ng application tulad ng ipinapakita sa sumusunod:

import javax.servlet. * ;
import javax.servlet.http. * ;
import java.io. * ;

ang pampublikong klase na HelloWorldServlet ay nagpapalawak ng HttpServlet {
pampublikong void doGet ( HttpServletRequest kahilingan, HttpServletResponse tugon )
itinapon ang ServletException, IOException {
response.setContentType ( 'text/html' ) ;
PrintWriter out = response.getWriter ( ) ;
out.println ( '' ) ;
out.println ( 'Hello World Servlet' ) ;
out.println ( '' ) ;
out.println ( '

Kumusta, Mundo!

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


Nagse-set up ito ng pangunahing servlet ng Tomcat na nagpi-print ng 'Hello world'.



Tukuyin ang Dockerfile

Ang susunod na hakbang para sa amin ay tukuyin ang Dockerfile upang bumuo ng isang custom na imahe na kasama ang aming 'Hello World' na app.

Sa loob ng root directory, lumikha ng bagong file na tinatawag na 'Dockerfile':







$ hawakan ~ / hello_world / Dockerfile


I-edit ang file at idagdag ang configuration gaya ng sumusunod:

# set Tomcat base na imahe
MULA sa tomcat:pinakabago

# Kopyahin ang Hello World na application sa direktoryo ng Tomcat webapps
KOPYA . / webapp / usr / lokal / tomcat / webapps / myapp
# Ilantad ang port 8080 para sa Tomcat
EXPOSE 8080


Dapat mayroon kang layout ng direktoryo tulad ng sumusunod:

hello_world
├── Dockerfile
└── webapp
└── WEB-INF
├── mga klase
│   └── HelloWorldServlet.java
└── web.xml

4 mga direktoryo, 3 mga file

Buuin ang Imahe

Susunod, bumuo kami ng pasadyang larawan ng Tomcat tulad ng ipinapakita sa sumusunod na utos:

$ pagtatayo ng docker -t tomcat-app .


Patakbuhin ang Lalagyan

Sa sandaling handa na ang imahe, maaari naming patakbuhin ang lalagyan mula sa imahe gamit ang utos tulad ng sumusunod:

$ tumakbo sa pantalan -d -p 8080 : 8080 --pangalan tomcat-container tomcat-app


Dapat itong buuin ang lalagyan ng Tomcat mula sa larawan ng tomcat-app na ginawa namin sa nakaraang hakbang at itali ito sa port 8080 sa host machine.

I-access ang Application

Magbukas ng web browser at mag-navigate sa . Dapat mong makita ang 'Hello, World!' mensaheng ipinapakita sa iyong browser.

Konklusyon

Binabati kita! Matagumpay mong na-deploy ang isang 'Hello World' na application sa isang Dockerized Tomcat container.