编写Dockerfile
#基础环境
FROM centos
#作者
MAINTAINER isczy
#拷贝当前文件夹下的readme.txt文件到容器内的/usr/local/下(这步没用,练习COPY指令)
COPY readme.txt /usr/local/readme.txt
#ADD 和COPY相似,但可以自动解压
ADD jdk-8u281-linux-x64.tar.gz /usr/local/
ADD apache-tomcat-9.0.43.tar.gz /usr/local/
#镜像构建时安装插件
RUN yum -y install vim
RUN yum -y install net-tools
#配置变量 键值对形式 MYPATH /usr/local
ENV MYPATH /usr/local
#指定工作目录,也就是进到容器时的当前目录
WORKDIR $MYPATH
#配置环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_281
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.43
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.43
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_BASE/lib
#暴露端口
EXPOSE 8080
CMD echo "---success---"
CMD /usr/local/apache-tomcat-9.0.43/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.43/bin/logs/catalina.out
运行Dockerfile构建镜像
进入Dockerfile的目录,在此处cmd打开窗口

执行命令:docker build -t mytomcat:9.0 -f Dockerfile-tomcat-jdk .
-t 后跟别名:版本号(自定义)
-f 指定路径,此处为当前目录下的Dockerfile-tomcat-jdk文件
注意最后不要忘记有个 空格和点

构建完成会打印如下图所示

进入docker运行镜像
1.docker images 查看构建的镜像

2.docker run 运行
执行命令:
docker run -d --name mytomcat01 -p 8080:8080 -v //d/docker/tomcat/webapps:/usr/local/apache-tomcat-9.0.43/webapps mytomcat:9.0
-d 后台运行
–name 起别名
-p 8080:8080 对外暴露8080端口映射到容器内的8080端口
-v 挂载卷(不知道的可以了解下上一篇博客:windows下docker容器挂载数据卷)
3.运行成功后docker ps查看当前运行的容器

此时宿主机也就是我们的windows中D:\docker\tomcat\webapps已经和容器内的/usr/local/apache-tomcat-9.0.43/webapps目录实现同步挂载
简单部署个hello docker页面
回到windows中D:\docker\tomcat\webapps目录下,新建文件夹test,进入test下新建一个WEB-INF目录和一个index.html

index内容
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>index</title>
</head>
<body>
<h1>hello docker</h1>
</body>
</html>
进入WEB-INF目录新建web.xml文件,内容如下即可:
<web-app 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"
version="2.4">
</web-app>
到此,简单的项目已经部署完成了,检验是否部署成功
回到docker查看虚拟机ip,执行命令:docker-machine ip default

浏览器输入http://192.168.99.100:8080/test访问,如下即部署成功

因为外部访问不到本机docker虚拟机的ip,那么如何对外访问呢?
项目对外访问
首先想到使用nginx转发请求,修改nginx的nginx.conf配置添加监听端口7777(自定义)即可
server {
listen 7777;
server_name localhost;
location / {
proxy_pass http://192.168.99.100:8080;
}
}
启动nginx访问本机IP地址:http://localhost:7777/test/

此时就实现了对外访问,同理部署正式服务器即可
本文介绍了如何使用Dockerfile构建一个包含Tomcat和JDK的镜像,详细步骤包括编写Dockerfile、构建镜像、运行容器并部署HelloDocker页面。通过挂载数据卷,实现在Windows主机与容器间同步文件,并通过配置nginx实现对外访问。
950

被折叠的 条评论
为什么被折叠?



