docker 部署springboot项目,解决容器启动成功但是浏览器访问不成功的问题

1.将springboot项目进行打包mycrawler-server-1.0.jar
2.打开docker toolbox,创建一个文件夹,将jar复制到文件夹中
3.创建dockerfile文件,并编辑 vi dockerfile,内容如下:
FROM openjdk:11
VOLUME /tmp
ADD mycrawler-server-1.0.jar app.jar
EXPOSE 9091
ENTRYPOINT [“java”,"-jar",“app.jar”,"–spring.profiles.active=dev","–server.port=9091",">/log/app.log"]

FROM指定基础镜像,这里是引入Java开发环境openjdk11,一定要与项目相对应,否是会启动失败。
如果docker容器中没有openjdk11镜像,在执行dockerfile 文件得第一条FROM命令会自动拉取openjdk11镜像。
注意:dockerfile文件必须命名为dockerfile,否则会报unable to prepare context: unable to evaluate symlinks in Dockerfile path: GetFileAttributesEx E:\docker\mycrawl\server1\Dockerfile: The system cannot find the file specified.
4.将jar打包为镜像,执行 docker build -t dockerfile .
5.运行镜像,执行 docker run --name server -d -p 9091:9091 dockerfile
6.查看容器是否启动成功,执行 docker ps -a -a表示也会查看已停止的容器
在这里插入图片描述
查看status,启动成功。
7.访问localhost:9091/hello,访问失败
docker 部署springboot项目,解决容器启动成功但是浏览器访问不成功的问题_第1张图片
8.检查原因,为什么容器启动成功但是浏览器访问不了
(1)进入容器,执行 docker exec -it 9372df2e5f57 bash 访问localhost:9091/hello
在这里插入图片描述在这里插入图片描述
发现容器里面是可以访问成功的
(2)再容器外访问localhost:9091/hello
在这里插入图片描述
出现错误,拒绝连接。应该是开放容器端口到宿主机端口9091没有开放权限,被docker防火墙拦截了,所以接下来就对9091端口开放访问权限
方法:
首先 执行exit 退出容器
将已启动得容器停止并删除
docker stop 9372df2e5f57
docker rm 9372df2e5f57
执行以下命令重新执行
*docker run --privileged=true -d -p 9091:9091/tcp --name server dockerfile *
docker 部署springboot项目,解决容器启动成功但是浏览器访问不成功的问题_第2张图片
重新访问 还是出现这个问题
在这里插入图片描述
因为我的电脑是win10 家庭版,所以用得是docker toolbox,需要把ip换成(docker-machine ip default)的IP
在这里插入图片描述
使用192.168.99.100访问,见证奇迹的时候到了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
yes ! 成功了,使用浏览器访问也成功了
在这里插入图片描述
在这里插入图片描述
大功告成 nice !!!

你可能感兴趣的:(docker)