Skip to content
DAILY QUOTE

“ ”

Dockerfile制作tomcat镜像

  1. 准备镜像文件tomcat压缩包,jdk的压缩包到当前目录
bash
ubuntu@Mystpet:~/docker-tomcat$ ls
apache-tomcat-9.0.116.tar.gz  Dockerfile  jdk-8u171-linux-x64.tar.gz
  1. 编写Dockerfile文件,命名Dockerfile,build会自动寻找文件,就不需要-f指定了
bash
# 1. 基础镜像换成 ubuntu 
FROM ubuntu:22.04

# 2. MAINTAINER 指令已经被官方废弃,现在业界规范都用 LABEL
LABEL maintainer="mystpet<1423322347@qq.com>"

# 复制 README 文件 (注意:你本地目录下必须真的有一个名为 README 的文件,否则构建会报错终止)
COPY README /usr/local/README

# 3. ADD 命令会自动解压
ADD jdk-8u171-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.116.tar.gz /usr/local/

# 4. Ubuntu 安装软件用 apt-get,且必须先执行 update 才能拉取到包列表
RUN apt-get update && apt-get install -y vim

# 环境变量设置 工作目录
ENV MYPATH /usr/local
WORKDIR $MYPATH

# 5. 环境变量:这里的目录名必须和解压出来的版本号严丝合缝!
ENV JAVA_HOME /usr/local/jdk1.8.0_171
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.116

ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.116

# 拼接 PATH
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

# 暴露 8080 端口
EXPOSE 8080

# 6. 设置默认命令,并使用 tail 保持前台运行不挂掉
CMD /usr/local/apache-tomcat-9.0.116/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.116/logs/catalina.out
  1. 构建镜像
bash
docker build -t mytomcat:0.1
  1. 启动镜像
bash
ubuntu@Mystpet:~$ docker run -d -p 8080:8080 --name tomcat01 \
-v /home/ubuntu/build/tomcat/test:/usr/local/apache-tomcat-9.0.35/webapps/test \
-v /home/ubuntu/build/tomcat/tomcatlogs/:/usr/local/apache-tomcat-9.0.35/logs \
mytomcat:0.1
-d:后台运行 -p:暴露端口 --name:别名 -v:绑定路径
  1. 访问测试
bash
docker exec -it 自定义容器的id /bin/bash 
curl localhost:8080
  1. 发布项目(由于做了卷挂载,我们直接在本地编写项目就可以发布了)

在本地编写web.xml和index.jsp进行测试

bash
ubuntu@Mystpet:~/build/tomcat/test$ mkdir WEB-INF
ubuntu@Mystpet:~/build/tomcat/test/WEB-INF$ vim web.xml

<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> </web-app>

ubuntu@Mystpet:~/build/tomcat/test$ vim index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>hello. xiaofan</title>
</head>
<body>
Hello World!<br/>
<%
System.out.println("-----my test web logs------");
%>
</body>
</html>

发现:项目部署成功, 可以直接访问ok!

我们以后开发的步骤:需要掌握Dockerfile的编写! 我们之后的一切都是使用docker进行来发布运行的!

总结