最近一直在学习docker来部署刚做的一个项目,犯了一些错误,但也积累了一些宝贵的经验,记录一下自己的成长。

首先下载安装docker的话是比较简单的,可以自己去docker的官网去查看和下载 docker安装详情 我的linux服务器是debian,大家可以自行选择适合自己的系统进行安装,按照步骤一步一步来的话应该是没啥问题的。

接下来就是实际操作:
1.首先使用docker搜索一下需要的tomcat镜像

sudo docker search tomcat      #普通用户需要加sudo

执行效果如下,有的介绍了tomcat的版本和JDK的版本,大部分都是tomcat8和JDK8,选择自己需要的镜像拉取

docker swarm 部署java 微服务 如何用docker 部署javaweb项目_war包


拉取官方镜像:

sudo docker pull docker.io/tomcat     #这个是tomcat8和jdk8的

如果拉取不下来的话,这个下载的快一些

sudo docker pull hub.c.163.com/library/tomcat   #版本同上

查看下载好的镜像

sudo docker image ls

docker swarm 部署java 微服务 如何用docker 部署javaweb项目_linux_02

如果mysql 也是docker的话,先获取到mysql的ip地址

sudo docker inspect [mysql容器的id或者名称]

将获取到的mysql的ip地址把开发环境的数据库地址替换掉,记得账号和密码也得更替

准备好自己的项目war包准备部署项目

sudo docker run -d -p 8080:8080 --name tomcat -v /data/TempWebApp/docker-tomcat/:/usr/local/tomcat/webapps --restart=always tomcat

-d: 后台运行
-p: 映射端口号
-name: 起别名
-v: 挂载的目录 主句目录:docker目录 可以有多个 (-v xxx:xxx -v xxx:xxx)
–restart=always: 开机自启动

查看已经启动的容器

sudo docker ps

docker swarm 部署java 微服务 如何用docker 部署javaweb项目_docker_03


可以加 -a 来查看所有的容器

进入tomcat容器内看看war包是否已经存在

sudo docker exec -it tomcat /bin/bash

tomcat指的是容器的名称或者容器的id

进入webApps目录可以看到项目已经存在

docker swarm 部署java 微服务 如何用docker 部署javaweb项目_tomcat_04


这时就已经可以访问自己的项目了

输入linux服务器的ip+端口+自己的项目名称 测试访问自己的项目

如果不想挂载目录部署的话可以先启动容器

sudo docker run -d -p 8080:8080 --name tomcat --restart=always tomcat

然后将项目拷贝到tomcat的目录下

sudo docker cp xxx.war tomcat:/usr/local/tomcat/webapps

这样同样可将项目部署到tomcat容器上,但是在开发中不建议这样做,因为开发中代码的变动变动很频繁,修改代码不如上面的方法简便。

写在最后

说说我自己在这几天的学习过程中碰到的一些问题,有兴趣的话可以在动手实际操作前先看一看,可以少走一些弯路。

首先是因为是测试部署,所以数据库就暂时使用的是我的电脑上的数据库,本想着打算项目测试发布成功后再部署数据库。

但是docker是部署在linux服务器上的,这样的话项目在启动的时候就会去连接我电脑上的数据库。

虽然linux服务器的防火墙关闭了,但是我的电脑防火墙没关,所以这样的话项目就一直卡在了启动阶段,然后不停地去连接数据库。

当时没有想到这一点,还以为是啥配置的问题,百度查了半天,修改了不少配置文件,但是还是卡顿在了项目启动的阶段,一直启动不起来。

纠结了很长时间,后来是突然想到了这一点,关闭防火墙一测试还真是因为这个原因,所以大家要是有和我相同的情况的话,一定要细心注意,说不定就是这个问题。

还有就是一定要注意,如果部署成功后想要删除war包,必须先停掉tomcat然后再删除war包,不然tomcat在启动的时候如果删除war包,则tomcat默认会一并删除相关的项目。然后你就会一脸懵的看着404了,要切记这一点。

接下来是一些常用的docker 命令
停止docker容器

sudo docker stop tomcat

启动

sudo docker start tomcat

重启

sudo docker restart tomcat

删除容器

sudo docker rm tomcat

删除没在运行的容器

sudo docker rm $(docker ps -aq)

查看容器的ip地址

sudo docker inspect tomcat