VPS+Docker+端口冲突排查

VPS 目前环境: 宿主机里 宝塔 装了Nginx 装了 博客网站 还装 Docker 里容器装了 komari 探针网站 端口映射8080→80 我现在要在Docker里 在装个Vue个人主页项目 我现在需要做哪些 检查和验证

你需要围绕 **Docker 环境可用性、端口冲突规避、Vue 项目部署就绪性、网络访问可达性、数据持久化(可选)** 这几个核心维度进行检查和验证,确保新 Vue 个人主页项目能顺利部署且不影响现有服务(宝塔 Nginx、博客、komari 探针),具体步骤如下:

一、 优先检查:Docker 环境本身的可用性(基础前提)

现有环境已部署 komari 容器,需先验证 Docker 环境是否正常运行,避免因 Docker 本身故障导致 Vue 项目部署失败。

  1. 检查 Docker 守护进程是否运行执行命令(适用于 Linux 系统,宝塔环境通常为 CentOS/Ubuntu):
systemctl status docker
  • 验证标准:输出中出现 active (running) 字样,说明 Docker 服务正常;
  • 异常处理:若显示inactive,执行 systemctl start docker 启动,且可添加开机自启 systemctl enable docker

2.检查 Docker Compose 可用性(可选,推荐)

Vue 项目部署若使用docker-compose.yml管理会更便捷,需验证是否安装且可用:

# 两种命令格式(根据安装版本)
docker compose version
# 或旧版本
docker-compose version

验证标准:能输出版本号(如v2.24.5),无 “command not found” 报错;

异常处理:若未安装,可通过宝塔终端或 SSH 执行官方安装脚本(以 Linux 为例):

curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

3.检查现有容器状态(不影响现有服务)

验证 komari 容器是否正常运行,同时确认 Docker 环境的容器管理功能正常:

docker ps
  • 验证标准:能看到 komari 对应的容器记录,STATUS列显示Up X hours/minutes(运行中),PORTS列显示0.0.0.0:8080->80/tcp(端口映射正常);
  • 异常处理:若 komari 容器未运行,先排查其故障(docker logs 容器名/容器ID),确保现有服务不受新部署影响。

二、 核心检查:端口冲突排查(重中之重,避免服务互扰)

现有环境已占用多个端口,需确保 Vue 项目使用的宿主端口容器内部端口均无冲突,避免部署后无法访问或导致现有服务崩溃。

1. 先梳理现有环境已占用的端口

  • 宝塔 Nginx:默认占用 80(HTTP)、443(HTTPS)(博客网站使用);
  • komari 容器:已映射 宿主8080 → 容器80,因此宿主 8080 端口和 ** 容器内 80 端口(仅 komari 容器内部,不影响其他容器)** 已被占用;
  • 额外注意:宝塔面板本身通常占用 8888 端口,需一并纳入规避范围。

2. 检查目标宿主端口是否被占用(推荐选择未被占用的端口,如 8081、8090 等)

假设你计划给 Vue 项目映射 宿主8081 → 容器80(Vue 项目容器内通常用 80 端口提供静态服务),先验证宿主 8081 端口是否空闲:

# 方法1:使用netstat(需安装net-tools,宝塔若未安装可执行 yum install net-tools / apt install net-tools)
netstat -tulpn | grep 8081

# 方法2:使用ss(系统自带,无需额外安装)
ss -tulpn | grep 8081
  • 验证标准:无任何输出结果,说明该端口未被占用,可用于 Vue 项目的宿主端口映射;
  • 异常处理:若有输出,说明端口已被占用,更换其他端口(如 8082、8099),重复上述检查步骤。

3. 容器内部端口规划(无冲突风险,仅需确认)

Vue 项目部署在 Docker 容器内,通常使用 Nginx 提供静态服务,容器内端口默认选择80(或8080),不同容器的内部端口相互独立,不会冲突(即使 komari 容器内用了 80,Vue 容器内也可继续用 80),只需确保:

  • 容器内配置的端口(如 Nginx 配置的listen 80;)与docker run/docker-compose.yml中配置的容器端口一致;
  • 宿主端口与容器端口的映射关系清晰(如8081:80)。

三、 关键验证:Vue 项目本身的部署就绪性

确保 Vue 项目已完成打包,且具备 Docker 部署所需的文件,避免因项目本身问题导致部署失败。

  1. 验证 Vue 项目是否已完成生产环境打包Vue 项目开发完成后,需执行npm run build(或yarn build)进行生产环境打包,生成dist目录(包含静态 HTML、CSS、JS 文件),这是 Docker 部署的核心文件。
    • 验证标准:存在dist目录,且目录内包含index.htmlstatic(或assets)等文件夹 / 文件,无打包报错(如依赖缺失、语法错误);
    • 异常处理:若未打包,进入 Vue 项目根目录,先安装依赖(npm install),再执行打包命令;若打包报错,排查并修复项目中的语法错误、依赖版本冲突等问题。
  2. 验证 Docker 部署所需文件是否齐全部署 Vue 项目到 Docker,需要准备两个核心文件(与dist目录放在同一级目录下):
    • Dockerfile:用于构建 Vue 项目的 Docker 镜像,定义基础镜像、复制文件、容器内配置等步骤;
    • .dockerignore(可选,推荐):用于排除不需要复制到镜像中的文件(如node_modules.gitpackage.json等),减小镜像体积。
    • 验证标准:Dockerfile文件存在,且内容配置正确(示例基础配置如下);
# 基础镜像:使用官方Nginx镜像(稳定版)
FROM nginx:alpine

# 将Vue打包后的dist目录下的所有文件复制到Nginx的默认网站根目录
COPY dist/ /usr/share/nginx/html/

# (可选)将自定义的Nginx配置文件复制到容器内,替换默认配置
# COPY nginx.conf /etc/nginx/conf.d/default.conf

# 暴露容器内端口(与后续端口映射对应,此处为80)
EXPOSE 80

# 容器启动时启动Nginx服务
CMD ["nginx", "-g", "daemon off;"]

异常处理:若缺少Dockerfile,根据上述示例创建,调整对应路径(确保COPY命令的源路径和目标路径正确)。

四、 部署后验证:网络访问可达性与服务隔离性

Vue 项目镜像构建完成、容器启动后,需验证是否能正常访问,且不影响现有服务的运行。

  1. 验证 Vue 容器是否正常启动启动 Vue 容器后,执行以下命令检查容器状态:
docker ps

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇