{1}docker 环境搭建
需要一台配置公网ip的服务器
添加必要的软件依赖
apt update
apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y
使用下面的 curl 导入源仓库的 GPG key:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
将Docker APT 软件源添加到的你的系统
add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable”
安装最近版本docker
apt update
apt install docker-ce docker-ce-cli containerd.io -y
安装指定版本,先列出docker软件源可用的版本
apt update
apt list -a docker-ce
apt install docker-ce= docker-ce-cli= containerd.io
docker进程状态
systemctl status docker
锁定docker版本,阻止更新
apt-mark hold docker-ce
验证安装过程
docker container run hello-world
卸载docker(可选)
停止所有正在运行的容器,并且移除所有的docker对象(容器,镜像,卷和网络)
docker container stop $(docker container ls -aq)
docker system prune -a --volumes
开始卸载(可选)
apt purge docker-ce
apt autoremove
设置docker开机自启动
systemctl enable docker
{2}docker compose 环境搭建
下载1.29版本 docker compose
curl -L “https://github.com/docker/compose/releases/download/1.29.2/docker-compose-
(
u
n
a
m
e
−
s
)
−
(uname -s)-
(uname−s)−(uname -m)” -o /usr/local/bin/docker-compose
增加可执行权限
chmod +x /usr/local/bin/docker-compose
增加软链接
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose -v
{3}单个host 开启5个bee 容器节点
拉取bee 和clef 容器镜像
docker pull ethersphere/bee:latest
docker pull ethersphere/clef:latest
查看当前容器的镜像
doker images
新建5个容器文件夹和1个clef文件夹
mkdir -p /data/beedata/.bee1
mkdir -p /data/beedata/.bee2
mkdir -p /data/beedata/.bee3
mkdir -p /data/beedata/.bee4
mkdir -p /data/beedata/.bee5
chmod 777 -R /data/bee-clef-data
chmod 777 -R /data/beedata
新建bees 文件,来执行docker compose 配置文件
mkdir bees
cd bees/
#编辑配置文件
vim docker-compose.yml
bee-1:
image: ethersphere/bee:latest
restart: unless-stopped
environment:
- BEE_API_ADDR=127.0.0.1:1633
- BEE_BOOTNODE=/dnsaddr/bootnode.ethswarm.org
- BEE_BOOTNODE_MODE
- BEE_CLEF_SIGNER_ENABLE=true
- BEE_CLEF_SIGNER_ENDPOINT=http://clef-1:8550
- BEE_CONFIG
- BEE_CORS_ALLOWED_ORIGINS
- BEE_DATA_DIR
- BEE_DB_CAPACITY=2500000
- BEE_DB_OPEN_FILES_LIMIT=20000
- BEE_DB_BLOCK_CACHE_CAPACITY
- BEE_DB_WRITE_BUFFER_SIZE
- BEE_DB_DISABLE_SEEKS_COMPACTION=false
- BEE_DEBUG_API_ADDR
- BEE_DEBUG_API_ENABLE=true
- BEE_GATEWAY_MODE=false
- BEE_GLOBAL_PINNING_ENABLE=false
- BEE_NAT_ADDR=
- BEE_NETWORK_ID=1
- BEE_P2P_ADDR
- BEE_P2P_QUIC_ENABLE=false
- BEE_P2P_WS_ENABLE=false
- BEE_PASSWORD=password
- BEE_PASSWORD_FILE=
- BEE_PAYMENT_EARLY=1000000000000
- BEE_PAYMENT_THRESHOLD=10000000000000
- BEE_PAYMENT_TOLERANCE=50000000000000
- BEE_RESOLVER_OPTIONS
- BEE_STANDALONE=false
- BEE_SWAP_ENABLE=true
- BEE_SWAP_ENDPOINT=https://stake.getblock.io/mainnet/?api_key=8a42510a-4674-4db3-8843-bd7bcb321370
- BEE_SWAP_FACTORY_ADDRESS
- BEE_SWAP_INITIAL_DEPOSIT=100000000000000000
- BEE_TRACING_ENABLE=false
- BEE_TRACING_ENDPOINT=127.0.0.1:6831
- BEE_TRACING_SERVICE_NAME
- BEE_VERBOSITY=5
- BEE_WELCOME_MESSAGE=hello bzz !!!!!!!!!!!!!
- BEE_FULL_NODE=true
ports:
- "${API_ADDR:-1633}${BEE_API_ADDR:-:1633}"
- "${P2P_ADDR:-1634}${BEE_P2P_ADDR:-:1634}"
- "${DEBUG_API_ADDR:-127.0.0.1:1635}${BEE_DEBUG_API_ADDR:-:1635}"
volumes:
- /data/beedata/.bee1:/home/bee/.bee
command: start
depends_on:
- clef-1
logging:
driver: json-file
options:
max-size: "200k"
max-file: "10"
ulimits:
nofile:
soft: "131072"
hard: "131072"
bee-2:
image: ethersphere/bee:latest
restart: unless-stopped
environment:
- BEE_API_ADDR=127.0.0.1:1633
- BEE_BOOTNODE=/dnsaddr/bootnode.ethswarm.org
- BEE_BOOTNODE_MODE
- BEE_CLEF_SIGNER_ENABLE=true
- BEE_CLEF_SIGNER_ENDPOINT=http://clef-1:8550
- BEE_CONFIG
- BEE_CORS_ALLOWED_ORIGINS
- BEE_DATA_DIR
- BEE_DB_CAPACITY=2500000
- BEE_DB_OPEN_FILES_LIMIT=20000
- BEE_DB_BLOCK_CACHE_CAPACITY
- BEE_DB_WRITE_BUFFER_SIZE
- BEE_DB_DISABLE_SEEKS_COMPACTION=false
- BEE_DEBUG_API_ADDR
- BEE_DEBUG_API_ENABLE=true
- BEE_GATEWAY_MODE=false
- BEE_GLOBAL_PINNING_ENABLE=false
- BEE_NAT_ADDR=
- BEE_NETWORK_ID=1
- BEE_P2P_ADDR
- BEE_P2P_QUIC_ENABLE=false
- BEE_P2P_WS_ENABLE=false
- BEE_PASSWORD=password
- BEE_PASSWORD_FILE=
- BEE_PAYMENT_EARLY=1000000000000
- BEE_PAYMENT_THRESHOLD=10000000000000
- BEE_PAYMENT_TOLERANCE=50000000000000
- BEE_RESOLVER_OPTIONS
- BEE_STANDALONE=false
- BEE_SWAP_ENABLE=true
- BEE_SWAP_ENDPOINT=https://stake.getblock.io/mainnet/?api_key=8a42510a-4674-4db3-8843-bd7bcb321370
- BEE_SWAP_FACTORY_ADDRESS
- BEE_SWAP_INITIAL_DEPOSIT=100000000000000000
- BEE_TRACING_ENABLE=false
- BEE_TRACING_ENDPOINT=127.0.0.1:6831
- BEE_TRACING_SERVICE_NAME
- BEE_VERBOSITY=3
- BEE_WELCOME_MESSAGE
- BEE_FULL_NODE=true
ports:
- "${API_ADDR:-1636}${BEE_API_ADDR:-:1633}"
- "${P2P_ADDR:-1637}${BEE_P2P_ADDR:-:1634}"
- "${DEBUG_API_ADDR:-127.0.0.1:1638}${BEE_DEBUG_API_ADDR:-:1635}"
volumes:
- /data/beedata/.bee2:/home/bee/.bee
command: start
depends_on:
- clef-1
logging:
driver: json-file
options:
max-size: "200k"
max-file: "10"
ulimits:
nofile:
soft: "131072"
hard: "131072"
bee-3:
image: ethersphere/bee:latest
restart: unless-stopped
environment:
- BEE_API_ADDR=127.0.0.1:1633
- BEE_BOOTNODE=/dnsaddr/bootnode.ethswarm.org
- BEE_BOOTNODE_MODE
- BEE_CLEF_SIGNER_ENABLE=true
- BEE_CLEF_SIGNER_ENDPOINT=http://clef-1:8550
- BEE_CONFIG
- BEE_CORS_ALLOWED_ORIGINS
- BEE_DATA_DIR
- BEE_DB_CAPACITY=2500000
- BEE_DB_OPEN_FILES_LIMIT=20000
- BEE_DB_BLOCK_CACHE_CAPACITY
- BEE_DB_WRITE_BUFFER_SIZE
- BEE_DB_DISABLE_SEEKS_COMPACTION=false
- BEE_DEBUG_API_ADDR
- BEE_DEBUG_API_ENABLE=true
- BEE_GATEWAY_MODE=false
- BEE_GLOBAL_PINNING_ENABLE=false
- BEE_NAT_ADDR=
- BEE_NETWORK_ID=1
- BEE_P2P_ADDR
- BEE_P2P_QUIC_ENABLE=false
- BEE_P2P_WS_ENABLE=false
- BEE_PASSWORD=password
- BEE_PASSWORD_FILE=
- BEE_PAYMENT_EARLY=1000000000000
- BEE_PAYMENT_THRESHOLD=10000000000000
- BEE_PAYMENT_TOLERANCE=50000000000000
- BEE_RESOLVER_OPTIONS
- BEE_STANDALONE=false
- BEE_SWAP_ENABLE=true
- BEE_SWAP_ENDPOINT=https://stake.getblock.io/mainnet/?api_key=8a42510a-4674-4db3-8843-bd7bcb321370
- BEE_SWAP_FACTORY_ADDRESS
- BEE_SWAP_INITIAL_DEPOSIT=100000000000000000
- BEE_TRACING_ENABLE=false
- BEE_TRACING_ENDPOINT=127.0.0.1:6831
- BEE_TRACING_SERVICE_NAME
- BEE_VERBOSITY=3
- BEE_WELCOME_MESSAGE
- BEE_FULL_NODE=true
ports:
- "${API_ADDR:-1639}${BEE_API_ADDR:-:1633}"
- "${P2P_ADDR:-1640}${BEE_P2P_ADDR:-:1634}"
- "${DEBUG_API_ADDR:-127.0.0.1:1641}${BEE_DEBUG_API_ADDR:-:1635}"
volumes:
- /data/beedata/.bee3:/home/bee/.bee
command: start
depends_on:
- clef-1
logging:
driver: json-file
options:
max-size: "200k"
max-file: "10"
ulimits:
nofile:
soft: "131072"
hard: "131072"
bee-4:
image: ethersphere/bee:latest
restart: unless-stopped
environment:
- BEE_API_ADDR=127.0.0.1:1633
- BEE_BOOTNODE=/dnsaddr/bootnode.ethswarm.org
- BEE_BOOTNODE_MODE
- BEE_CLEF_SIGNER_ENABLE=true
- BEE_CLEF_SIGNER_ENDPOINT=http://clef-1:8550
- BEE_CONFIG
- BEE_CORS_ALLOWED_ORIGINS
- BEE_DATA_DIR
- BEE_DB_CAPACITY=2500000
- BEE_DB_OPEN_FILES_LIMIT=20000
- BEE_DB_BLOCK_CACHE_CAPACITY
- BEE_DB_WRITE_BUFFER_SIZE
- BEE_DB_DISABLE_SEEKS_COMPACTION=false
- BEE_DEBUG_API_ADDR
- BEE_DEBUG_API_ENABLE=true
- BEE_GATEWAY_MODE=false
- BEE_GLOBAL_PINNING_ENABLE=false
- BEE_NAT_ADDR=
- BEE_NETWORK_ID=1
- BEE_P2P_ADDR
- BEE_P2P_QUIC_ENABLE=false
- BEE_P2P_WS_ENABLE=false
- BEE_PASSWORD=password
- BEE_PASSWORD_FILE=
- BEE_PAYMENT_EARLY=1000000000000
- BEE_PAYMENT_THRESHOLD=10000000000000
- BEE_PAYMENT_TOLERANCE=50000000000000
- BEE_RESOLVER_OPTIONS
- BEE_STANDALONE=false
- BEE_SWAP_ENABLE=true
- BEE_SWAP_ENDPOINT=https://stake.getblock.io/mainnet/?api_key=8a42510a-4674-4db3-8843-bd7bcb321370
- BEE_SWAP_FACTORY_ADDRESS
- BEE_SWAP_INITIAL_DEPOSIT=100000000000000000
- BEE_TRACING_ENABLE=false
- BEE_TRACING_ENDPOINT=127.0.0.1:6831
- BEE_TRACING_SERVICE_NAME
- BEE_VERBOSITY=3
- BEE_WELCOME_MESSAGE
- BEE_FULL_NODE=true
ports:
- "${API_ADDR:-1642}${BEE_API_ADDR:-:1633}"
- "${P2P_ADDR:-1643}${BEE_P2P_ADDR:-:1634}"
- "${DEBUG_API_ADDR:-127.0.0.1:1644}${BEE_DEBUG_API_ADDR:-:1635}"
volumes:
- /data/beedata/.bee4:/home/bee/.bee
command: start
depends_on:
- clef-1
logging:
driver: json-file
options:
max-size: "200k"
max-file: "10"
bee-5:
image: ethersphere/bee:latest
restart: unless-stopped
environment:
- BEE_API_ADDR=127.0.0.1:1633
- BEE_BOOTNODE=/dnsaddr/bootnode.ethswarm.org
- BEE_BOOTNODE_MODE
- BEE_CLEF_SIGNER_ENABLE=true
- BEE_CLEF_SIGNER_ENDPOINT=http://clef-1:8550
- BEE_CONFIG
- BEE_CORS_ALLOWED_ORIGINS
- BEE_DATA_DIR
- BEE_DB_CAPACITY=2500000
- BEE_DB_OPEN_FILES_LIMIT=20000
- BEE_DB_BLOCK_CACHE_CAPACITY
- BEE_DB_WRITE_BUFFER_SIZE
- BEE_DB_DISABLE_SEEKS_COMPACTION=false
- BEE_DEBUG_API_ADDR
- BEE_DEBUG_API_ENABLE=true
- BEE_GATEWAY_MODE=false
- BEE_GLOBAL_PINNING_ENABLE=false
- BEE_NAT_ADDR=
- BEE_NETWORK_ID=1
- BEE_P2P_ADDR
- BEE_P2P_QUIC_ENABLE=false
- BEE_P2P_WS_ENABLE=false
- BEE_PASSWORD=password
- BEE_PASSWORD_FILE=
- BEE_PAYMENT_EARLY=1000000000000
- BEE_PAYMENT_THRESHOLD=10000000000000
- BEE_PAYMENT_TOLERANCE=50000000000000
- BEE_RESOLVER_OPTIONS
- BEE_STANDALONE=false
- BEE_SWAP_ENABLE=true
- BEE_SWAP_ENDPOINT=https://stake.getblock.io/mainnet/?api_key=8a42510a-4674-4db3-8843-bd7bcb321370
- BEE_SWAP_FACTORY_ADDRESS
- BEE_SWAP_INITIAL_DEPOSIT=100000000000000000
- BEE_TRACING_ENABLE=false
- BEE_TRACING_ENDPOINT=127.0.0.1:6831
- BEE_TRACING_SERVICE_NAME
- BEE_VERBOSITY=3
- BEE_WELCOME_MESSAGE
- BEE_FULL_NODE=true
ports:
- "${API_ADDR:-1645}${BEE_API_ADDR:-:1633}"
- "${P2P_ADDR:-1646}${BEE_P2P_ADDR:-:1634}"
- "${DEBUG_API_ADDR:-127.0.0.1:1647}${BEE_DEBUG_API_ADDR:-:1635}"
volumes:
- /data/beedata/.bee5:/home/bee/.bee
command: start
depends_on:
- clef-1
logging:
driver: json-file
options:
max-size: "200k"
max-file: "10"
ulimits:
nofile:
soft: "131072"
hard: "131072"
配置文件部分要修改的参数:
BEE_SWAP_ENDPOINT #登陆getblock网站注册获取自己的api地址
- /data/beedata/.bee5: #文件存储部分,本次测试为5个容器节点使用同一个钱包地址,所以指向了同一个文件夹,不同bee容器使用不同钱包地址,建议每个修改成不一样
"${DEBUG_API_ADDR #容器内部和外部映射端口,可根据实际情况修改
{4}测试验证
进入 compose 配置文件指定文件夹
cd bees/
使用 docker compose 开启5个bee容器
docker-compose up
#查看所有bee容器运行情况
docker-compose ps -a
#停止所有bee容器
docker-compose stop