阿丹:
之前在使用nginx部署搭建vue项目的时候没有出docker配置nginx的配置文档(因为之前使用的是腾讯云现成的nginx服务器),今天配置安装一下tomcat和nginx在docker里面的安装。
在docker中安装配置tomcat
操作解读:
我们要完成的操作思路为:
1、完成拉取镜像
2、完成启动容器
3、完成端口映射
4、完成数据卷挂载
拉取镜像
拉取tomcat版本为9.0的
docker pull tomcat:9.0
如果需要最新版本
docker pull tomcat
查看自己拉取的镜像
docker images
创建并启动容器
要先创建并启动了容器然后配置文件中才能有相关的内容信息
使用代码:
docker run -p 8080:8080 --name 自己给容器取的名字 -d tomcat对应的版本
参数说明:
-p 将tomcat的端口映射到本地的8080端口上去
--name 是自己给tomcat这个容器起的一个名字
-d 是指定的对应的版本号
复制容器中的配置文件到主机中
解读:
在我们安装完毕之后发现在我们linux的主机中找不到我们安装tomcat的路径,发现只有进入了容器内部才能访问以及发现配置文件。但是这就给我们之后部署项目产生了很大的困难。所以我们要配置数据卷,来将docker中tomcat容器中的配置文件以数据卷的方式映射出来。
docker cp tomcat:/usr/local/tomcat/conf/ /usr/local/docker/tomcat/conf/
docker cp tomcat:/usr/local/tomcat/logs/ /usr/local/docker/tomcat/logs/
docker cp tomcat:/usr/local/tomcat/webapps/ /usr/local/docker/tomcat/webapps/
docker cp tomcat:/usr/local/tomcat/work/ /usr/local/docker/tomcat/work/
docker cp tomcat:/usr/local/tomcat/temp/ /usr/local/docker/tomcat/temp/
docker cp tomcat:/usr/local/tomcat/webapps.dist/ /usr/local/docker/tomcat/webapps.dist/
代码说明:
这个代码中的 tomcat:/user/local/tomcat/的这个路径是docker容器中的tomcat容器中的路径,然后我们要将这个路径映射到/usr/local/docker/tomcat这个路径下。
前面的路径是tomcat内部的路径,后面是我们linux中的路径。
这个参数是可变的,前面的第一个参数是不变的。后面的第二个路径是自己要复制的路径。
运行完毕代码就能发现在我们的linux路径下的tomcat中多了以下东西。
我们现在去访问自己的ip地址8080端口号发现是404是因为webapps文件夹下没有东西。
所以访问不到。
停止容器
docker stop tomcat
删除容器
docker rm tomcat
重新启动容器并挂载数据卷
docker run -p 8080:8080 --name tomcat \
-v /usr/local/docker/tomcat/conf/:/usr/local/tomcat/conf \
-v /usr/local/docker/tomcat/logs/:/usr/local/tomcat/logs \
-v /usr/local/docker/tomcat/webapps/:/usr/local/tomcat/webapps \
-v /usr/local/docker/tomcat/work/:/usr/local/tomcat/work \
-v /usr/local/docker/tomcat/temp/:/usr/local/tomcat/temp \
-d tomcat:latest
解读代码:
-p 将tomcat的8080端口映射到主机的8080端口上
-v 挂载数据卷
-d 指定版本
解决404问题
出现这个问题是因为webapps下面是空的
东西都在 webapps.dist中
进入容器
查看容器id
docker ps -a
docker exec -it 容器id /bin/bash
将webapps.dist下面的内容复制到webapps中
我使用了XShell工具来完成操作
注意原因:
在容器中使用rm -r webapps,删除webapps文件夹的时候,报出文件夹正在使用的错误。
导致将webapps.dist文件夹中文件失败。
所以这就是之前我们挂载数据卷的好处,外面的文件夹中数据和容器中的数据进行了同步,让我们可以使用可视化工具来完成代替代码的操作。