You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker安装Nginx出现方法弃用日志 如何SSH进入容器修复错误

前置说明

你日志里的这几条弃用提示不是Nginx本身的报错,是容器内运行的Node.js服务依赖的Objection.js ORM框架抛出的API废弃警告,和Nginx配置无关,需要修改业务侧的ORM调用代码解决。

操作步骤

1. 登录Docker宿主机

先通过SSH连接到运行Docker服务的宿主机,执行命令:

ssh 你的宿主机登录账号@宿主机公网/内网IP

输入密码完成登录后,执行以下命令列出所有运行中的容器,定位到你部署的目标Nginx容器,记录对应的容器ID:

docker ps

2. 进入容器内部

Docker容器不需要单独部署SSH服务即可进入内部交互终端,直接执行官方自带的exec命令即可(比在容器内装SSH更符合容器运行规范):

# 适用于Debian/Ubuntu/CentOS基础镜像
docker exec -it 你记录的容器ID /bin/bash

# 如果是Alpine基础镜像,没有bash,用sh进入
docker exec -it 你记录的容器ID /bin/sh

如果你坚持要通过SSH直连容器,需要先进入容器执行apt update && apt install -y openssh-server(Alpine用apk add),配置sshd登录密码、开放22端口、做宿主机端口映射后才能连接,该方案不推荐。

3. 修改代码替换废弃API

进入容器后找到Node业务代码的存放路径,常见路径包括/app、/usr/share/nginx/服务目录、/opt/service,全局搜索以下废弃方法,按规则逐一替换:

  • 所有QueryBuilder#allowEager调用,直接替换为allowGraph,原有传参完全兼容,无需调整逻辑
  • 所有QueryBuilder#eager调用,直接替换为withGraphFetched,原有传参逻辑完全一致
  • 所有QueryBuilder实例上的omit调用,删除该方法,改用select显式指定需要查询返回的字段
  • 所有Model实例上的$omit调用,替换为手动剔除返回对象的冗余字段,或通过Objection自带的序列化过滤配置实现字段隐藏

4. 重启服务验证

代码修改完成后,重启容器内的Node服务:

  • 如果是pm2托管的服务,执行pm2 restart all
  • 如果是直接node进程启动的服务,先执行ps aux | grep node找到对应进程ID,执行kill 进程ID后重新启动服务即可

注意:直接在运行中容器内修改的内容会在容器重启、重建后丢失,验证修改生效后,必须把调整后的代码同步到源码仓库,更新Docker构建流程重新构建镜像部署,否则下次发布后警告会复现。

内容的提问来源于stack exchange,提问作者Debbie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 02:33:06