前端破圈Docker for Win11项目不能访问🏴‍☠️

简介: 前端破圈Docker for Win11项目不能访问🏴‍☠️

前言

Win11 上使用 DockerNode 容器开发前端项目时遇到的一个问题,一个使用 Vue 官方的项目脚手架工具创建的一个 Vue3 项目,项目在 Win11 系统直接运行正常,在 Node 容器中运行也正常,但是无法在浏览器上访问,如下效果

image.png

原因排查

由于当前 Vue3 项目是刚使用官方本身是没问题的,Node 容器中测试 nodejs 脚本打印,环境检查等也都正常,问题可能出在其他方面

咨询了ChatGPT,Baidu,Google, Bing,Stack Overflow 等等,可能下面几个方面的因素导致

防火墙和出入站规则

检查防火墙或安全组设置允许访问您映射到主机上的端口,由于是在本地运行的 Docker 容器,检查了防火墙,设置全部为全部关闭,也无法在浏览器上访问,说明和防火墙开启关闭无关

image.png

由于 Vue3 项目端口是 5173, 入站规则和出站规则手动添加 5173 端口,测试后发现还是无法在浏览上访问,说明和出入站规则也无关

image.png

image.png

image.png

检查端口映射情况

容器创建命令使用如下,使用 -p 参数手动映射端口,端口映射正常

docker run -ti --name node-16.17.0 -p 5173:5173 -v ${pwd}://workspace node:16.17.0 bash

查看 Docker 容器网络

docker inspect <containerId>

检查容器中启动的服务地址和端口,在 NetworkSettings 下面的 Ports 中有前端服务的地址和端口,如果前端服务正常启动后 NetworkSettings -> Ports 里面是有内容的,如下效果

image.png

检查监听的IP地址

在容器内部,应该监听 0.0.0.0 而不是 localhost127.0.0.1,目前测试发现前端程序 server 地址为 localhost127.0.0.1 的情况下无法访问,手动改为 0.0.0.0 后能正常访问,容器中 Vue3 前端项目不能访问的原因找到了 😃😃

image.png

监听地址修改

Vue3 的默认配置是 127.0.0.1,在 vite.config.js 中添加 server 配置,设置 host0.0.0.0

image.png

总结

由于是本地主机运行的 Docker 容器,也是在本地浏览器上进行的访问,所以这次容器中运行的前端项目主要原因为容器内部监听的 IP 地址的问题,如果是 Docker 容器是在远程服务器上,可能就是防火墙、端口开放情况、网络等因素的原因了

思考

localhost127.0.0.10.0.0.0 之间的区别分别是什么?

localhost

前端项目一般运行后都是默认这个地址,通常称项目运行在本地

这是一个域名,它表示当前运行的计算机本身。当在一台计算机上访问 localhost 时,正在访问这台计算机的本地主机。几乎所有的网络应用程序默认将 localhost 指向到 127.0.0.1,所以你在大多数情况下会看到这两个名字被互换使用。

127.0.0.1

前端项目有时也会自动提供这个地址,和 localhost 一样也被称为项目在本地运行

这是 IPv4 地址,也被表示为回环地址(loopback address)。这个地址在本地网络中具有特殊含义,它表示当前计算机本身。与 localhost 一样,当访问 127.0.0.1 时,实际上是在访问运行程序的那台计算机

0.0.0.0

nodeexpress 服务运行后一般是这个地址,如下代码,运行后 log 输出为

应用实例,访问地址为 http://0.0.0.0:3000

var server = app.listen(3000, function () { 
  var host = server.address().address 
  var port = server.address().port 
  console.log("应用实例,访问地址为 http://%s:%s", host, port) 
})

这是一个特殊的 IPv4 地址,被表示为未指定的地址或零地址。这个地址在很多情况下被用作一个指示符,表示 “任何地方” 或 “所有可能的网络”。当你将网络接口的默认网关设置为 0.0.0.0 时,它表示路由所有的网络数据包都通过当前计算机。然而,通常这个地址不用于访问具体的网络资源,而是用于配置路由和网络设备

总结,localhost127.0.0.10.0.0.0 都是 IP 地址,但它们在计算机网络中具有不同的含义和用途。localhost127.0.0.1 用于访问本地计算机上的资源,而 0.0.0.0 通常用于指示路由或网络设备的配置

延伸

想了解 Win11 中使用 Docker 如何开发项目,可以看我之前的相关文章

前端破圈用Docker开发项目🏴‍☠️

目录
相关文章
|
数据采集 存储 Docker
深入理解Docker:为你的爬虫项目提供隔离环境
本教程介绍如何使用Docker构建隔离环境,运行Python爬虫项目,采集小红书视频页面的简介和评论。主要内容包括: 1. **Docker隔离环境**:通过Docker容器化爬虫,确保环境独立、易于部署。 2. **代理IP技术**:利用亿牛云爬虫代理突破反爬限制。 3. **Cookie与User-Agent设置**:伪装请求头,模拟真实用户访问。 4. **多线程采集**:提高数据采集效率。 前置知识要求:Python基础、Docker基本操作及HTML解析(可选)。教程还涵盖常见错误解决方法和延伸练习,帮助你优化爬虫代码并避免陷阱。
567 7
深入理解Docker:为你的爬虫项目提供隔离环境
|
前端开发 JavaScript 应用服务中间件
在Docker部署的前端应用中使用动态环境变量
以上步骤展示了如何在 Docker 配置过程中处理并注入环墨遁形成可执行操作流程,并确保最终用户能够无缝地与之交互而无须关心背后复杂性。
622 13
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
822 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
Dart 前端开发
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
615 75
【05】flutter完成注册页面完善样式bug-增加自定义可复用组件widgets-严格规划文件和目录结构-规范入口文件-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
Linux 虚拟化 Docker
win11怎么安装docker的必要设置自学软硬件工程师778天
win11怎么安装docker的必要设置自学软硬件工程师778天
win11怎么安装docker的必要设置自学软硬件工程师778天
|
前端开发 Java Shell
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
1134 20
【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
Dart 前端开发 容器
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
624 18
【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
前端开发 Java 开发工具
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
1771 18
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
|
安全 前端开发 开发工具
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
932 5
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
1133 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡

热门文章

最新文章