使用背景
- 环境差异需要:屏蔽不同操作系统及OS不同版本带来的安装差异;
- 做持续集成需要:做CI/CD的时候,从源码服务器下载代码,本地构建出目标版本后,需要自动打包成容器镜像用于部署;
构建环境
- 宿主操作系统:使用VirtualBox在MAC上虚拟的一个Ubuntu操作系统 Ubuntu16.04 LTS版本
- Docker Server Version :18.03.1-ce
构建目标
- 目标:基于ubuntu原始镜像构建jdk+tomcat的应用环境
- 软件版本
- jdk版本:jdk-8u171-linux-x64.tar.gz
- jdk下载地址:http://download.oracle.com/otn-pub/java/jdk/8u171-b11/512cd62ec5174c3487ac17c61aaa89e8/jdk-8u171-linux-i586.tar.gz
- tomcat版本:apache-tomcat-8.5.31.tar
- tomcat下载地址:http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.31/bin/apache-tomcat-8.5.31.tar.gz
- 小提示:jdk8最好使用tomcat8版本进行搭配,否则容易出现编译失败的问题
构建脚本及过程
- 先创建一个目录docker-tomcat
-
目录内容参考下图
- 必须的文件说明
jdk-8u171-linux-x64.tar.gz:用于拷贝到目标镜像中使用;
apache-tomcat-8.5.31.tar.gz:用于拷贝到目标镜像中使用;
tomcat7.sh:用于拷贝到目标镜像中使用;
Dockerfile:用于构建镜像; - 非必须文件说明
jdk1.8.0_171:用于验证解压缩jdk-8u171-linux-x64.tar.gz的命令,及解压缩后的文件目录结构;
apache-tomcat-8.5.31:用于验证解压缩apache-tomcat-8.5.31.tar.gz的命令,及解压缩后的文件目录结构;
- 编写构建的Dockerfile
名字必须是“Dockerfile”
-
Dockerfile文件内容参考如下
-
Dockerfile依赖的tomcat7.sh参考如下
小提示
在windows或者网页上拷贝的脚本代码可能在镜像中无法执行,需要现在ubuntu操作系统中完成dos2unix的文件格式转换。
- 构建mytomcat镜像
-
先切换到docker-tomcat目录,在docker控制台执行命令(注意后边有一个. ,表示当前目录):
docker build -t mytomcat .
查看构建出的镜像:
docker images
- 部署镜像启动容器
-
命令行
docker run -i -t -p 5000:8080 mytomcat
命令行说明
其中,docker run 用于运行一个容器
-t 在容器指定一个伪终端或者终端;
-i 进行命令交互;
-p 匹配镜像内的网络端口号,即我们可以通过宿主机中访问5000端口来达到访问容器8080端口的目的。
- 验证效果
-
通过浏览器查看