2020年11月14号更新:之前的部署方法麻烦了一些,对于我这种比较简单的项目可能不需用dockerfile构建镜像。之前的方式没有使用数据卷,也不利于修改项目的配置文件。
项目有点老,我拉取最新的tomcat里面的jdk是11版本的,然后报了一些错,所以我指定了一下版本,拉取的tomcat8:
docker pull tomcat:8.0.52
运行容器:
docker run -p 8081:8080 --name eocs -d -v /home/nc/projects/eocs/ROOT:/usr/local/tomcat/webapps/ROOT tomcat:8.5.40
-p
将宿主机的8081
端口映射到容器的8080
端口--name
后面是启动的容器名eocs-v
是将宿主机的/home/nc/projects/eocs/ROOT
目录映射到容器的/usr/local/tomcat/webapps/ROOT
,我在宿主机的该目录提前准备好了ROOT文件夹里面的内容,容器起来之后会将该文件夹里的内容同步到容器对应位置中,这样修改容器里的内容会容易很多- 最后面
tomcat:8.5.40
是镜像名
-------------------------------------------------- 分割符 ---------------------------------------------
- 查找Docker Hub上的tomcat镜像
docker search tomcat
,这里我下载的是第一个
- 新建工作目录,比如我mkdir docker/eocs存放eocs这个项目相关的东西
- 上传war包,因为我习惯以根目录访问项目,而不是多一个项目名。但是修改容器的配置文件又有点麻烦。所以我将生成的war包更名为ROOT.war
- 新建Dockerfile,并编写:
Dockerfile详细内容见 使用Dockerfile定制镜像
# 使用刚才pull的tomcat作为基础镜像
FROM tomcat
# 删除这个文件夹下的所有内容
RUN rm -rf /usr/local/tomcat/webapps/*
# 将要部署的war包复制到这个文件夹下
COPY ROOT.war /usr/local/tomcat/webapps
- 生成镜像
docker build -t [要生成的镜像名] .
注意最后面的点,指的当前工作的上下文,否则找不到dockerfile文件 - 基于这个镜像启动容器
docker run -d -p 8080:8080 [镜像名]
-d表示在后台运行,-p [宿主机端口]:[容器端口]表示将容器的端口映射到宿主机的端口 - 这个时候就可以使用ip:宿主机端口访问到项目了
- 查看指定容器的log
docker logs -f 容器id