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

基于Python3.9的Docker容器中安装Hardhat及相关依赖的方法

解决方案:在Python 3.9容器中安装Hardhat并支持指定npm命令

要实现需求,核心是给基于python:3.9的镜像添加Node.js环境(Hardhat属于Node.js工具链),以下是修改后的完整Dockerfile及关键说明:

修改后的Dockerfile

FROM python:3.9

# 安装Node.js和npm(python:3.9基于Debian,使用apt包管理器)
RUN apt-get update && apt-get install -y --no-install-recommends \
    nodejs \
    npm \
    && rm -rf /var/lib/apt/lists/*

# 可选但推荐:升级npm到最新稳定版,避免旧版本的依赖兼容问题
RUN npm install -g npm@latest

# 全局安装Hardhat,容器内可直接调用hardhat命令
RUN npm install -g hardhat

WORKDIR /app

# 先复制Python依赖文件,利用Docker缓存优化构建速度
COPY env/requirements.txt .
RUN pip install -r requirements.txt

# 复制项目其余文件
COPY . .

# 构建时安装指定的npm开发依赖(若需运行时手动执行,可移除这一步)
RUN npm install --save-dev @nomicfoundation/hardhat-ignition-ethers

CMD ["python3","main.py"]

关键步骤解释

  • 添加Node.js环境:Hardhat依赖Node.js运行,因此必须先安装nodejs和npm。使用--no-install-recommends避免安装冗余依赖,rm -rf /var/lib/apt/lists/*清理apt缓存以减小镜像体积。
  • 全局安装Hardhat:通过-g参数全局安装后,容器内任意目录都能直接执行hardhat命令。
  • 缓存优化:先复制requirements.txt并安装Python依赖,再复制整个项目文件——只要依赖文件未变更,Docker就会复用之前的缓存层,大幅加快构建速度。
  • 安装指定npm包:如果希望镜像构建完成就自带该依赖,保留RUN npm install --save-dev ...;如果需要在容器运行后手动执行命令,删除这一步即可,进入容器后直接运行对应npm命令。

验证方法

构建镜像后,用交互模式启动容器:

docker run -it --rm [你的镜像名称] bash

在容器内执行以下命令确认:

  • hardhat --version:检查Hardhat是否安装成功
  • npm list --save-dev @nomicfoundation/hardhat-ignition-ethers:确认目标依赖已安装(若构建时添加了安装步骤)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 14:22:24