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

本文涉及的产品
云防火墙,500元 1000GB
简介: 前端破圈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开发项目🏴‍☠️

目录
相关文章
|
2月前
|
运维 网络安全 持续交付
IDEA+Docker 远程一键部署项目:技术干货分享
【10月更文挑战第4天】在现代软件开发中,快速、可靠、自动化的部署流程是提升开发效率和运维质量的关键。IDEA(IntelliJ IDEA)作为Java开发者首选的IDE,结合Docker这一轻量级容器化技术,能够实现远程一键部署项目,极大地简化了开发到生产的流程。今天,我将和大家分享这一组合在工作学习中的实际应用和技术干货。
264 3
|
2月前
|
JavaScript 前端开发 Docker
前端全栈之路Deno篇(二):几行代码打包后接近100M?别慌,带你掌握Deno2.0的安装到项目构建全流程、剖析构建物并了解其好处
在使用 Deno 构建项目时,生成的可执行文件体积较大,通常接近 100 MB,而 Node.js 构建的项目体积则要小得多。这是由于 Deno 包含了完整的 V8 引擎和运行时,使其能够在目标设备上独立运行,无需额外安装依赖。尽管体积较大,但 Deno 提供了更好的安全性和部署便利性。通过裁剪功能、使用压缩工具等方法,可以优化可执行文件的体积。
135 3
前端全栈之路Deno篇(二):几行代码打包后接近100M?别慌,带你掌握Deno2.0的安装到项目构建全流程、剖析构建物并了解其好处
|
2月前
|
关系型数据库 MySQL Linux
Docker安装Mysql5.7,解决无法访问DockerHub问题
当 Docker Hub 无法访问时,可以通过配置国内镜像加速来解决应用安装失败和镜像拉取超时的问题。本文介绍了如何在 CentOS 上一键配置国内镜像加速,并成功拉取 MySQL 5.7 镜像。
489 2
Docker安装Mysql5.7,解决无法访问DockerHub问题
|
1月前
|
前端开发 Unix 测试技术
揭秘!前端大牛们如何高效管理项目,确保按时交付高质量作品!
【10月更文挑战第30天】前端开发项目涉及从需求分析到最终交付的多个环节。本文解答了如何制定合理项目计划、提高团队协作效率、确保代码质量和应对项目风险等问题,帮助你学习前端大牛们的项目管理技巧,确保按时交付高质量的作品。
34 2
|
2月前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
333 3
|
2月前
|
前端开发 开发工具 git
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
如何清理 docker 磁盘空间+修改 Gitea 服务器的 Webhook 设置+前端一些好学好用的代码规范-git hook+husky + commitlint
35 5
|
2月前
|
定位技术 文件存储 网络架构
Docker部署PhotoPrism、Immich图片管理应用,无需公网IP远程访问教程
除了Synology、QNAP、TerraMaster等品牌的NAS设备内置图库功能,市面上还有多种备受欢迎的第三方应用,如PhotoPrism、Immich、LibrePhotos、Piwigo、Photoview等。这些应用不仅提供强大的图片管理能力,还可通过Docker轻松部署。借助贝锐花生壳服务,即使没有公网IP也能实现远程访问,突破地理限制,提升数据可访问性和安全性,让用户随时随地管理私人图库。
169 1
|
2月前
|
前端开发 JavaScript 应用服务中间件
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
本文是一篇详细的教程,介绍了如何在Linux系统上安装和配置nginx,以及如何将打包好的前端项目(如Vue或React)上传和部署到服务器上,包括了常见的错误处理方法。
569 0
linux安装nginx和前端部署vue项目(实际测试react项目也可以)
|
2月前
|
缓存 前端开发 JavaScript
前端架构思考:代码复用带来的隐形耦合,可能让大模型造轮子是更好的选择-从 CDN 依赖包被删导致个站打不开到数年前因11 行代码导致上千项目崩溃谈谈npm黑洞 - 统计下你的项目有多少个依赖吧!
最近,我的个人网站因免费CDN上的Vue.js包路径变更导致无法访问,引发了我对前端依赖管理的深刻反思。文章探讨了NPM依赖陷阱、开源库所有权与维护压力、NPM生态问题,并提出减少不必要的依赖、重视模块设计等建议,以提升前端项目的稳定性和可控性。通过“left_pad”事件及个人经历,强调了依赖管理的重要性和让大模型代替人造轮子的潜在收益
|
2月前
|
JavaScript 前端开发 Docker
拿下奇怪的前端报错(二):nvm不可用报错`GLIBC_2.27‘‘GLIBCXX_3.4.20‘not Found?+ 使用docker构建多个前端项目实践
本文介绍了在多版本Node.js环境中使用nvm进行版本管理和遇到的问题,以及通过Docker化构建流程来解决兼容性问题的方法。文中详细描述了构建Docker镜像、启动临时容器复制构建产物的具体步骤,有效解决了不同项目对Node.js版本的不同需求。
100 0