Scaffold-eth项目Docker容器化部署指南
2025-07-06 07:50:57作者:韦蓉瑛
前言
Scaffold-eth是一个区块链开发脚手架工具,它集成了前端React应用、Hardhat开发环境和链上交互功能。本文将详细介绍如何使用Docker容器化技术来部署和运行Scaffold-eth项目,帮助开发者快速搭建本地开发环境。
环境准备
在开始之前,请确保您的系统满足以下要求:
- Docker环境:已安装Docker引擎,建议使用最新稳定版本
- Git工具:用于获取项目代码
- 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
在这种模式下,您需要手动执行各个工具的启动命令,适合需要对构建流程有完全控制的开发者。
项目结构说明
在容器中,项目的主要文件位于以下位置:
- 智能合约:
/opt/scaffold-eth/packages/hardhat/contracts/YourContract.sol
- 前端代码:
/opt/scaffold-eth/packages/react-app/src/App.jsx
- 部署脚本:
/opt/scaffold-eth/packages/hardhat/deploy/
开发工作流建议
- 修改智能合约后,执行
./docker/setup.sh deploy
重新部署 - 前端修改会自动热重载,无需手动重启
- 对于重大变更,建议重启整个容器环境
常见问题处理
- 端口冲突:确保3000和8545端口未被其他应用占用
- 容器启动失败:检查Docker日志获取详细错误信息
- 依赖安装问题:尝试删除node_modules后重新启动
通过Docker容器化部署Scaffold-eth项目,开发者可以获得一致的开发环境,避免因系统差异导致的各种问题,大幅提升开发效率。