Docker是目前比较流行的容器化技术,可以将应用程序与其依赖的环境打包到一个容器中,提供轻量级的配置、部署和管理方式。本文将介绍制作tomcat镜像并部署项目的步骤。
准备工作
在开始制作tomcat镜像前,需要先准备好以下环境:
- 安装Docker
- 基于Docker官方的Java镜像,下载Tomcat。
- 编写项目代码并打包为war包。
- 了解 Linux 命令基础知识。
制作Tomcat镜像
步骤
- 下载基于doker官方的Java镜像。
docker pull java:8-jre-alpine
这里使用的是Java 8 的小型基础镜像 alpine/3.7 镜像。
- 下载Tomcat并解压
wget http://mirror.navercorp.com/apache/tomcat/tomcat-9/v9.0.54/bin/apache-tomcat-9.0.54.tar.gz
tar -zxf apache-tomcat-9.0.54.tar.gz -C /usr/local
3.运行Tomcat
cd /usr/local/apache-tomcat-9.0.54/bin
./startup.sh
4.创建 Dockerfile
vi Dockerfile
## 编辑 Dockerfile
FROM java:8-jre-alpine
LABEL maintainer="Your Name <Your-Email@xxx.com>"
ENV CATALINA_HOME /usr/local/tomcat
ENV PATH $CATALINA_HOME/bin:$PATH
RUN apk add --no-cache curl && \
curl http://mirror.navercorp.com/apache/tomcat/tomcat-9/v9.0.54/bin/apache-tomcat-9.0.54.tar.gz | tar -xz && \
mv apache-tomcat-9.0.54 /usr/local/tomcat && \
rm -rf $CATALINA_HOME/webapps/*
EXPOSE 8080
CMD ["catalina.sh", "run"]
解释:
FROM
:指定基础镜像,这里使用Java 8的alpine镜像作为基础镜像。LABEL
:指定镜像的元数据ENV
:指定环境变量,这里为了方便设置了$CATALINA_HOME
和$PATH
变量,其中$CATALINA_HOME
设置为/usr/local/tomcat
,$PATH
将${CATALINA_HOME}/bin
添加到系统的PATH中。RUN
:执行命令,安装和配置Tomcat环境.EXPOSE
:暴露指定的端口,这里为Tomcat启动的端口 8080。CMD
:指定启动容器时执行的命令。这里设置为catalina.sh run
,即启动Tomcat服务器。
5.构建镜像
docker build -t tomcat-test:0.0.1 .
6.推送镜像
可以将自己的镜像推送到网站,使用命令:
docker login
docker tag tomcat-test:0.0.1 your-docker-id/tomcat-test:0.0.1
docker push your-docker-id/tomcat-test:0.0.1
在Docker中运行Tomcat容器并部署应用
步骤
- 下载和编写应用程序代码。
以一个简单的servlet为例,将其编写为 hello-tomcat
项目并打包为 war 包:
<!-- web.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Hello-Tomcat-WebApp</display-name>
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
// HelloServlet.java
public class HelloServlet extends HttpServlet {
private static final long serialVersionUID = 257245453039928002L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html");
PrintWriter out = resp.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Tomcat Sample</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Hello World</h1>");
out.println("</body>");
out.println("</html>");
out.close();
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}
}
假设将其打包为 hello-tomcat.war
文件.
2.创建 Dockerfile
vi Dockerfile
## 编辑 Dockerfile
FROM your-docker-id/tomcat-test:0.0.1
COPY ./hello-tomcat.war /usr/local/tomcat/webapps/
解释:
FROM
:指定基础镜像,这里使用上面制作的tomcat-test镜像。COPY
:将应用程序hello-tomcat.war
复制到容器的/usr/local/tomcat/webapps/
目录下。
3.构建镜像
docker build -t hello-tomcat:0.0.1 .
4.运行容器
docker run -d -p 8080:8080 hello-tomcat:0.0.1
解释:
-d
参数表示在后台运行容器。-p
参数表示将容器的8080端口映射到主机的8080端口。hello-tomcat:0.0.1
是刚才所构建的镜像的名称和版本。
5.访问应用程序
在浏览器中访问 http://localhost:8080/hello-tomcat/hello,即可看到运行结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Docker 制作tomcat镜像并部署项目的步骤 - Python技术站