Skip to content

Commit

Permalink
Added docker setup for local env (#747)
Browse files Browse the repository at this point in the history
  • Loading branch information
begmaroman authored Sep 23, 2022
1 parent bf909f5 commit 29177a3
Show file tree
Hide file tree
Showing 5 changed files with 165 additions and 0 deletions.
1 change: 1 addition & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
docker/local/Dockerfile
9 changes: 9 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,12 @@ test:
go build -o artifacts/polygon-edge .
$(eval export PATH=$(shell pwd)/artifacts:$(PATH))
go test -timeout 28m ./...

.PHONY: run-local
run-local:
docker-compose -f ./docker/local/docker-compose.yml up -d --build

.PHONY: stop-local
stop-local:
docker-compose -f ./docker/local/docker-compose.yml stop

24 changes: 24 additions & 0 deletions docker/local/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
FROM golang:1.17-alpine AS builder

WORKDIR /polygon-edge

ADD go.mod go.sum ./
RUN go mod download

COPY . .

RUN go build -o polygon-edge main.go

FROM alpine:latest AS runner

RUN apk --no-cache add ca-certificates jq

WORKDIR /polygon-edge

COPY --from=builder /polygon-edge/polygon-edge ./
COPY ./docker/local/polygon-edge.sh ./

# Expose json-rpc, libp2p and grpc ports
EXPOSE 8545 9632 1478

ENTRYPOINT ["./polygon-edge.sh"]
99 changes: 99 additions & 0 deletions docker/local/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
version: '3.5'

services:
## INITIALIZE GENESIS AND SECRETS
init:
build:
context: ../../
dockerfile: docker/local/Dockerfile
command: ["init"]
volumes:
- node-1:/polygon-edge/data-1
- node-2:/polygon-edge/data-2
- node-3:/polygon-edge/data-3
- node-4:/polygon-edge/data-4
- genesis:/genesis
networks:
- polygon-edge-docker

## RUN NODES
## Nodes must have the same names as folders in genesis-legde
node-1:
build:
context: ../../
dockerfile: docker/local/Dockerfile
command: ["server", "--data-dir", "/data", "--chain", "/genesis/genesis.json", "--grpc-address", "0.0.0.0:9632", "--libp2p", "0.0.0.0:1478", "--jsonrpc", "0.0.0.0:8545", "--seal"]
depends_on:
- init
ports:
- '10000:9632'
- '10002:8545'
volumes:
- node-1:/data
- genesis:/genesis
networks:
- polygon-edge-docker
restart: on-failure

node-2:
build:
context: ../../
dockerfile: docker/local/Dockerfile
command: ["server", "--data-dir", "/data", "--chain", "/genesis/genesis.json", "--grpc-address", "0.0.0.0:9632", "--libp2p", "0.0.0.0:1478", "--jsonrpc", "0.0.0.0:8545", "--seal"]
depends_on:
- init
ports:
- '20000:9632'
- '20002:8545'
volumes:
- node-2:/data
- genesis:/genesis
networks:
- polygon-edge-docker
restart: on-failure

node-3:
build:
context: ../../
dockerfile: docker/local/Dockerfile
command: ["server", "--data-dir", "/data", "--chain", "/genesis/genesis.json", "--grpc-address", "0.0.0.0:9632", "--libp2p", "0.0.0.0:1478", "--jsonrpc", "0.0.0.0:8545", "--seal"]
depends_on:
- init
ports:
- '30000:9632'
- '30002:8545'
volumes:
- node-3:/data
- genesis:/genesis
networks:
- polygon-edge-docker
restart: on-failure

node-4:
build:
context: ../../
dockerfile: docker/local/Dockerfile
command: ["server", "--data-dir", "/data", "--chain", "/genesis/genesis.json", "--grpc-address", "0.0.0.0:9632", "--libp2p", "0.0.0.0:1478", "--jsonrpc", "0.0.0.0:8545", "--seal"]
depends_on:
- init
ports:
- '40000:9632'
- '40002:8545'
volumes:
- node-4:/data
- genesis:/genesis
networks:
- polygon-edge-docker
restart: on-failure

networks:
polygon-edge-docker:
driver: bridge
name: polygon-edge-docker

volumes:
node-1:
node-2:
node-3:
node-4:
genesis:
32 changes: 32 additions & 0 deletions docker/local/polygon-edge.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#!/bin/sh

set -e

POLYGON_EDGE_BIN=./polygon-edge

case "$1" in

"init")
echo "Generating secrets..."
node1id=$("$POLYGON_EDGE_BIN" secrets init --data-dir data-1 --json | jq -r '.node_id')
node2id=$("$POLYGON_EDGE_BIN" secrets init --data-dir data-2 --json | jq -r '.node_id')
"$POLYGON_EDGE_BIN" secrets init --data-dir data-3
"$POLYGON_EDGE_BIN" secrets init --data-dir data-4
echo "Secrets have been successfully generated"

echo "Generating genesis file..."
"$POLYGON_EDGE_BIN" genesis \
--dir /genesis/genesis.json \
--consensus ibft \
--ibft-validators-prefix-path data- \
--bootnode /dns4/node-1/tcp/1478/p2p/"$node1id" \
--bootnode /dns4/node-2/tcp/1478/p2p/"$node2id"
echo "Genesis file has been successfully generated"
;;

*)
echo "Executing polygon-edge..."
exec "$POLYGON_EDGE_BIN" "$@"
;;

esac

0 comments on commit 29177a3

Please sign in to comment.