首页
/ Scaffold-eth项目Docker容器化部署指南

Scaffold-eth项目Docker容器化部署指南

2025-07-06 07:50:57作者:韦蓉瑛

前言

Scaffold-eth是一个区块链开发脚手架工具,它集成了前端React应用、Hardhat开发环境和链上交互功能。本文将详细介绍如何使用Docker容器化技术来部署和运行Scaffold-eth项目,帮助开发者快速搭建本地开发环境。

环境准备

在开始之前,请确保您的系统满足以下要求:

  1. Docker环境:已安装Docker引擎,建议使用最新稳定版本
  2. Git工具:用于获取项目代码
  3. Bash Shell:macOS和Linux系统默认提供,Windows用户可选择以下方案:
    • Windows Subsystem for Linux (WSL 2)
    • Git BASH(随Git for Windows一起安装)

对于Windows用户特别提示:如果使用WSL,需要配置Docker使用WSL 2后端以获得最佳性能。

基础部署流程

1. 获取项目代码

首先需要将Scaffold-eth项目克隆到本地:

git clone https://github.com/scaffold-eth/scaffold-eth.git

2. 启动Docker容器

进入项目目录并执行启动脚本:

cd scaffold-eth
./docker/setup.sh start

这个脚本会自动完成以下工作:

  • 构建并启动Docker容器
  • 安装所有必要的依赖项
  • 启动本地开发链
  • 部署智能合约
  • 启动前端开发服务器

首次执行可能需要几分钟时间完成所有初始化工作。

3. 重新部署合约

当您修改了智能合约后,可以单独执行合约重新部署:

./docker/setup.sh deploy

4. 访问前端应用

部署完成后,默认可以通过以下地址访问前端界面:

http://localhost:3000

高级配置选项

自定义前端端口

如果需要更改前端服务的默认端口(例如改为8080),可以按照以下方式操作:

# 先停止并移除现有容器
DOCKER_IMAGE=$(docker ps --filter name=SCAFFOLD_ETH -q)
[ -z "$DOCKER_IMAGE" ] || docker rm -f SCAFFOLD_ETH

# 使用自定义端口启动新容器
docker run \
  --name SCAFFOLD_ETH \
  -v `pwd`:/opt/scaffold-eth \
  -w /opt/scaffold-eth \
  -e PORT=8080 \
  -p 8080:8080 \
  -p 8545:8545 \
  -dt node:16

# 启动服务
./docker/setup.sh start

交互式开发模式

对于需要更精细控制开发流程的高级用户,可以使用交互式模式启动容器:

# 停止并移除现有容器
DOCKER_IMAGE=$(docker ps --filter name=SCAFFOLD_ETH -q)
[ -z "$DOCKER_IMAGE" ] || docker rm -f SCAFFOLD_ETH

# 启动交互式容器
docker run \
  --name SCAFFOLD_ETH \
  -v `pwd`:/opt/scaffold-eth \
  -w /opt/scaffold-eth \
  -p 3000:3000 \
  -p 8545:8545 \
  --entrypoint /bin/bash \
  -ti node:16

在这种模式下,您需要手动执行各个工具的启动命令,适合需要对构建流程有完全控制的开发者。

项目结构说明

在容器中,项目的主要文件位于以下位置:

  1. 智能合约/opt/scaffold-eth/packages/hardhat/contracts/YourContract.sol
  2. 前端代码/opt/scaffold-eth/packages/react-app/src/App.jsx
  3. 部署脚本/opt/scaffold-eth/packages/hardhat/deploy/

开发工作流建议

  1. 修改智能合约后,执行./docker/setup.sh deploy重新部署
  2. 前端修改会自动热重载,无需手动重启
  3. 对于重大变更,建议重启整个容器环境

常见问题处理

  1. 端口冲突:确保3000和8545端口未被其他应用占用
  2. 容器启动失败:检查Docker日志获取详细错误信息
  3. 依赖安装问题:尝试删除node_modules后重新启动

通过Docker容器化部署Scaffold-eth项目,开发者可以获得一致的开发环境,避免因系统差异导致的各种问题,大幅提升开发效率。