在linux系统上用docker部署JavaWeb项目
1.安装docker环境
也可以使用国内 daocloud 一键安装命令:
curl -sSL https://get.daocloud.io/docker | sh
2.可使用以下命令,查看 Docker 是否安装成功:
docker version
运行第一个hello-world镜像程序
sudo docker run hello-world
3.启动docker
service docker start
重启:
service docker restart
关闭docker服务:
service docker stop
查看docker是否启动:
systemctl status docker
4.安装tomcat镜像
#搜索tomcat镜像 docker search tomcat #安装tomcat镜像 docker pull tomcat #查看已安装的tomcat镜像 docker images
5.通过下载tomcat镜像启动一个tomcat容器
-d表示后台运行,-p端口映射,前面的8088是外围访问端口(也就是本机ip对外开放的端口),后面8080是docker容器内部的端口
tomcat:last last是指定的tomcat的标签,相同的镜像可以指定不同的标签以做区分。
docker run -d -p 8080:8080 tomcat:latest
6.查看运行的docker容器
docker ps
进入docker里面的tomcat容器,需要容器ID,所以上面要查看正在运行的容器tomcat
docker exec -it 9fccf0236619 /bin/bash
#查看tomcat镜像内部文件,并进入webapps文件夹 ls cd webapps
退出容器:
exit
启动容器:
docker start containerID
停止容器:
docker stop containerID
7.验证tomcat容器
通过在浏览器中访问tomcat来查看启动的tomcat镜像是否可以正常运行,访问方式同一般机器下部署tomcat,即:http://ip:8080,根据自己ip地址情况。如我的测试地址是:http://192.168.93.128:8080
8.将war包放入到docker下的tomcat中
将war包通过Ftp放入linux系统中的usr目录下,并将war包拷贝到docker中,containerID 是你所启动tomcat镜像的容器ID或者容器名称也可以,用docker ps命令查看。 这是将test.war放到tomcat的webapps下
docker cp /usr/test.war containerID:/usr/local/tomcat/webapps/
9.由于war包在tomcat下是自动解压的,所以我们稍等项目完全成功启动,我们就可以直接访问项目了。
本地打开浏览器直接访问,不成功就等项目成功启动后,或者多试几次就ok。
10.使用linux目录长期与docker容器目录挂载
#(什么是宿主机:自己当前的服务器centOS7称之为宿主机,宿主机上的docker可看作一个容器,也就是docker所在的服务器称为宿主机)
为挂载目录之前做准备:
在usr/local/目录下创建一个dev目录,dev目录用来专门存放开发包什么的,dev目录下再创建一个docker-tomcat目录,行了,就用docker-tomcat进行映射到docker中的tomcat容器里的webapps目录,创建目录如下图:
目录创建好了,下面进行挂载目录,运行tomcat容器
#挂载usr/local/dev/docker-tomcat目录,并运行容器命令如下 docker run -d -p 8088:8080 --name tomcat -v /usr/local/dev/docker-tomcat:/usr/local/tomcat/webapps --restart=always tomcat
此错表示已经有一个tomcat别名的容器了,所以我们要使用命令查看一下所有容器
#docker查看所有容器 docker ps -a
#删除容器 docker rm 5137519634f0
删除之后,再运行命令:
docker run -d -p 8088:8080 --name tomcat -v /usr/local/dev/docker-tomcat:/usr/local/tomcat/webapps --restart=always tomcat
我已经在docker-tomcat目录下放了一个test01.war包和一个01.txt文件,所以当我执行挂载启动的时候,进入tomcat容器下的webapps目录,里面已经把docker-tomcat目录下的内容挂载过来了,tomcat并自动把test01.war解压了。如下图:以后只管增删宿主机上docker-tomcat目录下的内容就行啦。
11.现在项目都是前后端分离,后端基本使用springboot项目打成jar包,所以tomcat已经不方便了,docker使用tomcat还要挂载webapps目录。其实不管是jar包还是war包,可以使用docker的Dockerfile,自定义镜像的形式来启动项目。