实战:Dockerfile制作tomcat镜像

1.准备镜像文件

  • tomcat压缩包
  • jdk压缩包

2.编写dockerfile文件

官方命名Dockerfile,build的时候会自动寻找这个文件,不需要-f指定了

FROM centos
MAINTAINER zjzaki<zjzaki@outlook.com>

COPY readme.txt /usr/local/readme.txt

# ADD 命令会自动解压压缩包
ADD jdk-8u151-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.5.20.tar.gz /usr/local/

RUN yum -y install vim

ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_151
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.20
ENV CATALINA_BASH /usr/local/apache-tomcat-8.5.20
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080
CMD /usr/local/apache-tomcat-8.5.20/bin/startup.sh && tail -f /usr/local/apache-tomcat-8.5.20/bin/logs/catalina.out

3.构建镜像

docker build -t diytomcat .

报错

image-20230822133740840

这是因为Centos8于2021年年底停止了服务,使用yum源安装时候,就会报错:Failed to download metadata for repo ‘AppStream’: Cannot prepare internal mirrorlist: No URLs in mirrorlist”,这时我们需要修改yum源

修改后的dockerfile文件

FROM centos
MAINTAINER zjzaki<zjzaki@outlook.com>

COPY readme.txt /usr/local/readme.txt

# ADD 命令会自动解压压缩包
ADD jdk-8u151-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-8.5.20.tar.gz /usr/local/

RUN cd /etc/yum.repos.d/
RUN  sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
RUN sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
RUN wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
RUN yum clean all
RUN yum makecache
RUN cd /

RUN yum -y install vim

ENV MYPATH /usr/local
WORKDIR $MYPATH

ENV JAVA_HOME /usr/local/jdk1.8.0_151
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.20
ENV CATALINA_BASH /usr/local/apache-tomcat-8.5.20
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin

EXPOSE 8080
CMD /usr/local/apache-tomcat-8.5.20/bin/startup.sh && tail -f /usr/local/apache-tomcat-8.5.20/bin/logs/catalina.out

4.启动docker

docker run -d -p 9090:8080 --name zjzakitomcat -v /home/zjzaki/build/tomcat/test:/url/local/apache-tomcat-8.5.20/webapps/test -v /home/zjzaki/build/tomcat/tomcatlogs/:/url/local/apache-tomcat-8.5.20/logs diytomcat

5.访问测试

curl localhost:9090

浏览器访问 公网ip+端口

6.发布项目

由于做了卷挂载可以直接在本地发布