Docker简单部署web项目(tomcat+war包+mysql)
先简单测试单独运行tomcat项目
#启用tomcat8镜像命名为webapp,将容器的8080端口映射到主机的8080端口
docker run -p 8080:8080 --name webapp -d tomcat:8
将项目放入tomcat运行
#进入刚刚用tomcat8镜像运行的容器,并关闭容器内tomcat服务,进入容器内的bin目录
docker exec -it webapp /bin/bash
#进入tomcat的bin目录 关闭
sh shutdown.sh
#将宿主机的war包传到tomcat容器的webapp下 -> docker cp 本地文件路径 容器名/id:容器路径
docker cp /usr/local/war/linjw.war webapp:/usr/local/tomcat/webapps
docker start webapp
添加mysql镜像
#后台启动一个mysql5.7镜像 映射宿主机3308端口 设置密码garwer 如果本地无该镜像将从官方拉取
docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=garwer -e MYSQL_DATABASE=garwer mysql:5.7
【这种启动方式有个弊端,可以测试访问mysql成功后,在里面创建一张表退出,停止容器后再重启,数据就丢失了
正确的姿势是:挂载一个本地文件到容器,以此保证mysql容器数据的持久化(还可以根据需要mysql的配置文件,这边仅挂载数据) -v 前面为宿主机路径 后为容器路径
--privileged=true给容器加上特定权限 否则挂载的时候会报权限错误 宿主机会自动创建/usr/local/mysql-docker/data路径文件 这边因为因为外部占用我用3308 可自行调整端口
】
docker run -d -p 3308:3306 --name garwer-mysql --privileged=true -e MYSQL_ROOT_PASSWORD=garwer -e MYSQL_DATABASE=garwer -v /usr/local/mysql-docker/data:/var/lib/mysql mysql:5.7
#进入容器查看是否创建了garwer数据库 密码是否为garwer fcfdc2743ebe为我的容器id
docker exec -it fcfdc2743ebe /bin/bash
#登陆测试
mysql -uroot -p