Docker发布JavaWeb项目

准备容器

建议拉去Tomcat镜像,这样可以省略掉JDK、Tomcat的配置比较方便。

如果想练习JDK和Tomcat的安装可以拉取个Ubuntu或者CentOS镜像,从头开始搭建;
如果对JDK或者Tomcat版本有特殊要求,可以先去官方仓库看看支持哪些

docker pull tomcat默认拉取最新版
在这里插入图片描述

docker images可以查看本地的镜像
在这里插入图片描述
docker run -d -p 8080:8080 --name hello_tomcat tomcat利用tomcat镜像,创建容器

-d: 后台运行容器,并返回容器ID;
-p: 指定端口映射,格式为:主机(宿主)端口:容器端口;
–name hello_tomcat: 为容器指定一个名称;

可以看到返回的容器ID
在这里插入图片描述

  • 最新版可能遇到的问题:tomcat启动成功但是报了404
    在这里插入图片描述
  1. docker exec -it hello_tomcat进入容器
  2. 发现webapps下都是空的,文件都在webapps.dist下
    在这里插入图片描述
  3. 将webapps.dist下的所有文件复制到webapps下
    在这里插入图片描述
    最后即可正常访问tomcat首页
    在这里插入图片描述

发布war包

docker cp ./gradle_web2-1.0-SNAPSHOT.war hello_tomcat:/usr/local/tomcat/webapps将自己的war包复制到容器中,可以重启容器或者等tomcat解压这个war包
在这里插入图片描述
通过项目名可以访问
在这里插入图片描述

制作镜像

在确认自己发布的war包能正常访问之后,还可以将这个容器制作为镜像
docker stop hello_tomcat先停止掉正在运行的容器
docker commit hello_tomcat helllo_tomcat_image将自己的容器提交为镜像

如果需要将镜像交给别人使用

  1. 可以保存为文件交给别人加载
    docker save -o 保存的文件名 镜像名
    docker load -i 保存的文件名
  2. 也可以推送到远程仓库
    docker login 远程仓库地址
    docker push 远程仓库地址/项目名
    docker pull 远程仓库地址/项目名

docker images查看自己的镜像
在这里插入图片描述
docker run -d -p 8088:8080 --name hello_tomcat_container hello_tomcat_image
在这里插入图片描述

  • 可能遇到的问题:403 Forbidden
    生成镜像前的web服务已经正常,镜像一般不会改变容器内部的信息,问题大概率出在宿主机。
    在这里插入图片描述

根据经验,403可能是宿主机端口冲突

  1. docker stop hello_tomcat_container关闭容器
  2. netstat -ano|findstr "8081"发现端口确实被占用,找一个没被占用的端口,我这里选的是8088。
    在这里插入图片描述
  3. docker rm hello_tomcat_container删除掉刚刚端口冲突的容器,之后一定要选空闲的端口再重新创建容器。

用Dockerfile制作镜像

上述是先根据tomcat镜像创建容器,再将war包传到容器,最后将容器制作为镜像。我们可以利用Dockerfile将这几步合并在一起。

  1. 创建hello_tomcat_dockerfile文件,输入下面的内容:选择tomcat镜像,将自己war包复制进去,一定要注意war包的路径。
from tomcat
COPY gradle_web2-1.0-SNAPSHOT.war /usr/local/tomcat/webapps
  1. docker build -f ./hello_tomcat_dockerfile -t hello_tomcat_image:v2 .制作成新的镜像,v2为tag
  2. docker images可以查看到刚刚制作的镜像
    在这里插入图片描述
  3. docker run -d -p 8888:8080 --name hello_tomcat_container2 hello_tomcat_image:v2
    成功访问上自己的web项目
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44112790/article/details/109889522