1、编写prysm-beacon-chain Dockerfile文件
# 使用 Ubuntu 20.04 作为基础镜像
FROM ubuntu:20.04
# 安装必要的系统库和工具
RUN apt-get update && \
apt-get install -y curl && \
apt-get clean
# 创建存储数据的目录
RUN mkdir -p /data/prysm
WORKDIR /data/prysm
# 下载 Prysm beacon chain 二进制文件并将其复制到 /usr/local/bin/beacon-chain
RUN curl -Lo /usr/local/bin/beacon-chain https://github.com/prysmaticlabs/prysm/releases/download/v5.0.3/beacon-chain-v5.0.3-linux-amd64 && \
chmod +x /usr/local/bin/beacon-chain && \
ls -l /usr/local/bin/beacon-chain
# 生成授权密钥并运行 Prysm Beacon Chain
#CMD /bin/sh -c "/usr/local/bin/beacon-chain generate-auth-secret && /usr/local/bin/beacon-chain --accept-terms-of-use --execution-endpoint=http://eth:8551 --jwt-secret=/data/prysm/jwt.hex --checkpoint-sync-url=https://beaconstate.info --genesis-beacon-api-url=https://beaconstate.info --datadir /data/beacondata"
# 设定容器启动时运行的命令
ENTRYPOINT ["/usr/local/bin/beacon-chain"]
2、打prysm-beacon-chain镜像
docker build -t prysm-beacon-chain:v5.0.3 .
3、编写eth对应的Dockerfile
# 使用 Ubuntu 20.04 作为基础镜像
FROM ubuntu:20.04
# 安装必要的系统库和工具
RUN apt-get update && \
apt-get install -y curl && \
apt-get clean
# 创建存储数据的目录
RUN mkdir -p /data/ethdata
WORKDIR /data/ethdata
# 下载 eth 二进制文件并将其复制到 /usr/local/bin/geth
RUN curl -Lo /usr/local/bin/geth https://github.com/ethereum/go-ethereum/releases/download/v1.14.0/geth-linux-amd64-1.14.0 && \
chmod +x /usr/local/bin/geth
# 设定容器启动时运行的命令
ENTRYPOINT ["/usr/local/bin/geth"]
4、打eth的镜像
docker build -t prysm-eth-chain:v5.0.3 .
5、编写docker-compose.yaml文件
version: '3.8'
services:
prysm-beacon-chain:
build:
context: .
dockerfile: Dockerfile
container_name: prysm-beacon-chain
volumes:
- ./prysm:/data/prysm
- ./beacondata:/data/beacondata
ports:
- "4000:4000"
networks:
- eth_network
command: >
/usr/local/bin/beacon-chain generate-auth-secret &&
/usr/local/bin/beacon-chain --accept-terms-of-use --execution-endpoint=http://eth:8551 --jwt-secret=/data/prysm/jwt.hex --checkpoint-sync-url=https://beaconstate.info --genesis-beacon-api-url=https://beaconstate.info --datadir /data/beacondata
eth:
build:
context: ./eth
dockerfile: Dockerfile
container_name: eth
volumes:
- ./beacondata:/data/beacondata
- ./ethdata:/data/ethdata
ports:
- "3545:3545"
- "8551:8551"
networks:
- eth_network
command: --cache 4096 --http --http.api web3,eth,net,personal,txpool,engine,admin --http.addr 0.0.0.0 --http.port 3545 --datadir /data/eth/chaindata --allow-insecure-unlock --rpc.allow-unprotected-txs --authrpc.addr 0.0.0.0 --authrpc.port 8551 --authrpc.vhosts localhost --maxpeers=300 --authrpc.jwtsecret /data/prysm/jwt.hex
networks:
eth_network:
driver: bridge
6、启动容器
docker-compose up -d
7、验证
略。。。