项目要使用Docker进行部署,因为这是一个老项目,要使用jdk7和tomcat7的环境才能运行,然而公司给服务对象是一国企,开发环境只有内网,又没有相关的基础镜像,于是只能自己动手下载基础镜像,然后构建合适版本的tomcat镜像了
从外网中下载 centos:latest 镜像
docker pull centos:latest
然后将镜像保存为压缩文件
docker save -o centos.tar centos:latest
将 centos.tar 上传到工作内网服器务上
将centos.tar文件加载到docker中
docker load -i centos.tar
运行一容器,测试centos镜像是否正常
docker run -it --rm centos:latest /bin/bash
#-i 以交互模式运行容器
#-t 分配一个伪终端
# --rm 这个参数是说容器退出后随之将其删除。
下载 jdk7 下载地址
下载 tomcat7 下载地址
将下载的jdk和tomcat上传到服务器
放到 /home/dockerhome/tomcat7 目录下
创建Dockerfile并编码
cd /home/dockerhome/tomcat7
vim Dockerfile
/home/dockerhome/tomcat7
#构建tomcat镜像
#以 centos 为基础镜像
FROM centos:latest
#作者信息
MAINTAINER [email protected]
#把java添加到容器中
ADD jdk-7u80-linux-x64.tar.gz /usr/local
#把 tomcat 添加到容器中
ADD apache-tomcat-7.0.61.tar.gz /usr/local
#配置 java 环境变量
ENV JAVA_HOME /usr/local/jdk1.7.0_80
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#配置 tomcat 环境变量
ENV CATALTNA_HOME /usr/local/apache-tomcat-7.0.61
ENV PATH $PATH:$JAVA_HOME/bin
#设置工作目录
WORKDIR $CATALTNA_HOME
#容器端口
EXPOSE 8080
ENTRYPOINT ["catalina.sh","run"]
docker build -t regnode.hzsh:5000/tomcat/tomcat:v7.0.61 .
docker run -d --name tomcat7061 -p 10039:8080 regnode.hzsh:5000/tomcat/tomcat:v7.0.61
启动容器时,出现以下错误
提示:/usr/bin/docker-current: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused “exec: “catalina.sh”: executable file not found in $PATH”.
原因CATALTNA_HOME环境变量未加入到PATH
ENV PATH $PATH:$JAVA_HOME/bin
PATH修改后,Dockerfile为:
#构建tomcat镜像
#以 centos 为基础镜像
FROM centos:latest
#作者信息
MAINTAINER [email protected]
#把java添加到容器中
ADD jdk-7u80-linux-x64.tar.gz /usr/local
#把 tomcat 添加到容器中
ADD apache-tomcat-7.0.61.tar.gz /usr/local
#配置 java 环境变量
ENV JAVA_HOME /usr/local/jdk1.7.0_80
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
#配置 tomcat 环境变量
ENV CATALTNA_HOME /usr/local/apache-tomcat-7.0.61
ENV PATH $PATH:$JAVA_HOME/bin:$CATALTNA_HOME/bin
#设置工作目录
WORKDIR $CATALTNA_HOME
#容器端口
EXPOSE 8080
ENTRYPOINT ["catalina.sh","run"]
#删除容器
docker container rm -f tomcat7061
#删除镜像
docker image rm regnode.hzsh:5000/tomcat/tomcat:v7.0.61
docker build -t regnode.hzsh:5000/tomcat/tomcat:v7.0.61 .
docker run -d --name tomcat7061 -p 10039:8080 regnode.hzsh:5000/tomcat/tomcat:v7.0.61
docker container exec -it tomcat7061 /bin/bash
浏览器中输入地址:http://10.152.70.23:10039/
如图,测试成功:
将项目打成war包并上传到服务器上
然后将项目war包复制到容器的tomcat工作目录中:
docker cp /home/dockerhome/hzlhkpi/hzlhkpi.war tomcat7061_10039:/usr/local/apache-tomcat-7.0.61/webapps
最后访问你的项目即可
http://10.152.70.23:10039/hzlhkpi