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

Docker运行Node容器报错Cannot find module './common/config/config'如何解决

问题原因

你当前的Dockerfile存放在alerts-service目录下,默认的Docker构建上下文就是该目录,COPY指令只能读取上下文范围内的文件,存放在上层目录的common文件夹不在构建上下文范围内,不会被复制到容器内,因此会触发模块找不到的报错。

解决方案

方案1:调整构建上下文(最直接)

将Docker构建的根目录调整为上层的NODEJS-SERVICES目录,同时修改Dockerfile的复制逻辑:

  1. 修改alerts-service内的Dockerfile内容:
FROM node:12

ENV PORT=8080\
    # 注意这里要改成容器内的实际路径,不要用本地路径
    CONFIG_FOLDER=/alerts/common/config \
    CONFIG_NAME=configuration.json

WORKDIR /alerts

# 复制alerts-service的依赖文件
COPY ["alerts-service/package.json", "alerts-service/package-lock.json*", "./"]
RUN npm install

# 复制alerts-service的业务代码
COPY alerts-service/ .
# 复制公共的common目录到容器内对应路径
COPY common/ ./common/

EXPOSE 1400

CMD [ "node", "index.js" ]
  1. 到本地NODEJS-SERVICES目录下执行构建命令,指定Dockerfile路径:
    docker build -t alerts-service -f ./alerts-service/Dockerfile .

方案2:封装公共依赖包

如果有多个服务都依赖common目录的内容,可以把该目录封装为私有npm包,在alerts-service的package.json中声明依赖,构建时通过npm install自动安装到容器内,不需要额外处理复制逻辑。

注意事项

你原Dockerfile中CONFIG_FOLDER配置的是本地电脑的文件路径,容器内部不存在该路径,必须修改为容器内对应的实际路径,否则后续配置初始化也会失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 05:45:06