Docker安装tomcat、nginx并部署项目

docker部署tomcat

  • docker search tomcat首先查找tomcat的镜像,一般点赞最高的就是了

  • docker pull tomcat 拉取官方镜像

  • docker images 查看所有镜像


tomcat镜像为咱们pull下来的。

但是这个tomcat镜像里面并没有咱们的项目,咱们想要镜像里面有我们的war包,那该怎么办呢?

我是在下面的路径新建了一个Dockerfile

里面的内容为

from tomcat
MAINTAINER ym.peng@groupwith.com
RUN rm -rf /usr/local/tomcat/webapps/*
COPY pms.war   /usr/local/tomcat/webapps
COPY msp.war /usr/local/tomcat/webapps
COPY isp.war /usr/local/tomcat/webapps
COPY plutus.war /usr/local/tomcat/webapps
复制代码

  • 第一行表示你从哪个镜像而来,咱们一开始docker images查看所有镜像的时候,里面的是tomcat

  • 第二行表示作者

  • 第三行到最后,RUN相当于直接在镜像里面运行Linux命令,可以把镜像比作一个Linux,咱们把webapps下的文件都删掉,然后把源Linux的war包copy到镜像,每次构建镜像的时候它都会执行这个操作,但是此时还没有构建镜像,有了这个Dockerfile就可以构建镜像了。关闭这个Dockerfile

  • docker build -t cspimage:1.0 .使用当前目录的 Dockerfile 创建镜像,标签为 cspimage:1.0

有了镜像之后,咱们开始构建容器,什么是容器?容器是用镜像创建的运行实例,
也就是说,有了这个镜像,咱们可以构建多个不同的容器,接下来构建一个容器

但是,万一有什么改动,不是每次都要构建镜像和容器?可以写一个shell脚本

新建一个deploy.sh

  • 第一行是删除容器cspcontailner
  • 第二行是删除镜像cspimage:1.0(咱们刚才构建的,但是容器还没有构建,下面会说怎么构建)
  • 第三行就是构建镜像
  • 第四行是构建了一个容器,名字叫做cspcontailner,外部端口号为9000,容器内部端口号为8080
  • 第五行挂载文件,分号前面的是源Linux路径,后面的是容器
  • 第六行加第五行解决tomcat和源Linux时区不一致问题
  • 第七行啥也不是,可以去掉,但是得留着那个cspimage:1.0,这是咱们的镜像

如果运行deploy.sh,它能帮咱们删除容器,镜像,然后通过docker build和前面的Dockerfile构建一个新的镜像,docker run构建一个新的容器

chmod +x deploy.sh给deploy.sh授权

OK,容器构建完毕,咱们可以通过9000端口访问咱们的项目了,msp是咱们刚才导入的其中一个项目。以后每次部署的时候,只需要把war包放在/root/docker下面,也就是你的Dockerfile和deploy.sh的目录,然后执行deploy.sh即可


docker部署nginx

docker pull nginx 老规矩,上来就是拉镜像到自己的linux

我已经拉过了,这回咱们就不构建新的镜像了,因为不用copy文件到镜像,直接构建容器即可

同样的,自己写一个shell脚本

  • 第一行第二行是停止名字为nginxcontailner的容器并删除
  • 后面是创建根据nginx镜像构建一个容器,并且把源Linux的nginx文件挂载到容器里,dist是我的静态资源,你们想挂其他的按照这个格式写就可以

同样的,授权,然后执行

over