updating SuperNode dockerfile

This commit is contained in:
Ian Norden 2020-01-27 14:13:54 -06:00
parent 33ac5978f5
commit 5dec3d145d
4 changed files with 25 additions and 50 deletions

View File

@ -7,10 +7,11 @@ RUN apk add busybox-extras
# this is probably a noob move, but I want apk from alpine for the above but need to avoid Go 1.13 below as this error still occurs https://github.com/ipfs/go-ipfs/issues/6603 # this is probably a noob move, but I want apk from alpine for the above but need to avoid Go 1.13 below as this error still occurs https://github.com/ipfs/go-ipfs/issues/6603
FROM golang:1.12.4 as builder FROM golang:1.12.4 as builder
# Get and build vulcanizedb ipfs_concurreny fork RUN yum install -y libusb1-devel systemd-devel
RUN go get -u -d github.com/vulcanize/vulcanizedb
# Get and build vulcanizedb
ADD . /go/src/github.com/vulcanize/vulcanizedb
WORKDIR /go/src/github.com/vulcanize/vulcanizedb WORKDIR /go/src/github.com/vulcanize/vulcanizedb
RUN git checkout ipfs_concurrency
RUN GO111MODULE=on GCO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-extldflags "-static"' -o vulcanizedb . RUN GO111MODULE=on GCO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-extldflags "-static"' -o vulcanizedb .
# Get and build vulcanize's go-ipfs fork # Get and build vulcanize's go-ipfs fork
@ -18,17 +19,9 @@ RUN go get -u -d github.com/ipfs/go-ipfs
WORKDIR /go/src/github.com/ipfs/go-ipfs WORKDIR /go/src/github.com/ipfs/go-ipfs
RUN git remote add vulcanize https://github.com/vulcanize/go-ipfs.git RUN git remote add vulcanize https://github.com/vulcanize/go-ipfs.git
RUN git fetch vulcanize RUN git fetch vulcanize
RUN git checkout -b pg_ipfs vulcanize/postgres_update RUN git checkout -b pg_ipfs v0.4.22-alpha
RUN GO111MODULE=on GCO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-extldflags "-static"' -o ipfs ./cmd/ipfs RUN GO111MODULE=on GCO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-extldflags "-static"' -o ipfs ./cmd/ipfs
# Get and build vulcanize's geth fork
RUN go get -u -d github.com/ethereum/go-ethereum
WORKDIR /go/src/github.com/ethereum/go-ethereum
RUN git remote add vulcanize https://github.com/vulcanize/go-ethereum.git
RUN git fetch vulcanize
RUN git checkout -b statediff_geth vulcanize/statediffing
RUN GCO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-extldflags "-static"' -o geth ./cmd/geth
# Build migration tool # Build migration tool
RUN go get -u -d github.com/pressly/goose/cmd/goose RUN go get -u -d github.com/pressly/goose/cmd/goose
WORKDIR /go/src/github.com/pressly/goose/cmd/goose WORKDIR /go/src/github.com/pressly/goose/cmd/goose
@ -41,19 +34,7 @@ FROM alpine
WORKDIR /app WORKDIR /app
ARG USER ARG USER
ARG config_file=environments/syncPublishScreenAndServe.toml ARG config_file=environments/superNode.toml
ARG vdb_dbname="vulcanize_public"
ARG vdb_hostname="localhost"
ARG vdb_port="5432"
ARG vdb_user="postgres"
ARG vdb_password
# setup environment
ENV VDB_PG_NAME="$vdb_dbname"
ENV VDB_PG_HOSTNAME="$vdb_hostname"
ENV VDB_PG_PORT="$vdb_port"
ENV VDB_PG_USER="$vdb_user"
ENV VDB_PG_PASSWORD="$vdb_password"
RUN adduser -D 5000 $USER RUN adduser -D 5000 $USER
USER $USER USER $USER
@ -68,7 +49,6 @@ COPY --from=builder /go/src/github.com/vulcanize/vulcanizedb/vulcanizedb vulcani
COPY --from=builder /go/src/github.com/pressly/goose/cmd/goose/goose goose COPY --from=builder /go/src/github.com/pressly/goose/cmd/goose/goose goose
COPY --from=builder /go/src/github.com/vulcanize/vulcanizedb/db/migrations migrations/vulcanizedb COPY --from=builder /go/src/github.com/vulcanize/vulcanizedb/db/migrations migrations/vulcanizedb
COPY --from=builder /go/src/github.com/ipfs/go-ipfs/ipfs ipfs COPY --from=builder /go/src/github.com/ipfs/go-ipfs/ipfs ipfs
COPY --from=builder /go/src/github.com/ethereum/go-ethereum/geth geth
EXPOSE 8080 EXPOSE 8080

View File

@ -9,6 +9,7 @@ test $VDB_PG_NAME
test $VDB_PG_HOSTNAME test $VDB_PG_HOSTNAME
test $VDB_PG_PORT test $VDB_PG_PORT
test $VDB_PG_USER test $VDB_PG_USER
test $IPFS_INIT
set +e set +e
# Export our database variables so that the IPFS Postgres plugin can use them # Export our database variables so that the IPFS Postgres plugin can use them
@ -26,35 +27,30 @@ echo "Connecting with: $VDB_PG_CONNECT"
echo "Running database migrations" echo "Running database migrations"
./goose -dir migrations/vulcanizedb postgres "$VDB_PG_CONNECT" up ./goose -dir migrations/vulcanizedb postgres "$VDB_PG_CONNECT" up
# If the db migrations ran without err # If the db migrations ran without err
if [ $? -eq 0 ]; then if [[ $? -eq 0 ]]; then
# Initialize PG-IPFS # and IPFS_INIT is true
echo "Initializing Postgres-IPFS profile" if [[ "$IPFS_INIT" = true ]] ; then
./ipfs init --profile=postgresds # initialize PG-IPFS
echo "Initializing Postgres-IPFS profile"
./ipfs init --profile=postgresds
else
echo "IPFS profile already initialized, skipping initialization"
fi
else else
echo "Could not run migrations. Are the database details correct?" echo "Could not run migrations. Are the database details correct?"
exit exit
fi fi
# If IPFS initialization was successful # If IPFS initialization was successful
if [ $? -eq 0 ]; then if [[ $? -eq 0 ]]; then
# Begin the state-diffing Geth process
echo "Beginning the state-diffing Geth process"
./geth --statediff --statediff.streamblock --ws --syncmode=full 2>&1 | tee -a log.txt &
sleep 1
else
echo "Could not initialize Postgres backed IPFS profile. Are the database details correct?"
exit
fi
# If Geth startup was successful
if [ $? -eq 0 ]; then
# Wait until block synchronisation has begun # Wait until block synchronisation has begun
echo "Waiting for block synchronization to begin" echo "Waiting for block synchronization to begin"
( tail -f -n0 log.txt & ) | grep -q "Block synchronisation started" # this blocks til we see "Block synchronisation started" ( tail -f -n0 log.txt & ) | grep -q "Block synchronisation started" # this blocks til we see "Block synchronisation started"
# And then spin up the syncPublishScreenAndServe Vulcanizedb service # And then spin up the syncPublishScreenAndServe Vulcanizedb service
echo "Beginning the syncPublishScreenAndServe vulcanizedb process" echo "Beginning the syncPublishScreenAndServe vulcanizedb process"
./vulcanizedb syncPublishScreenAndServe --config=config.toml 2>&1 | tee -a log.txt & ./vulcanizedb superNode --config=config.toml 2>&1 | tee -a log.txt &
else else
echo "Could not initialize state-diffing Geth." echo "Could not initialize state-diffing Geth."
exit exit

View File

@ -171,11 +171,11 @@ sudo -u postgres createdb ec2-user
sudo su postgres sudo su postgres
psql psql
ALTER USER "ec2-user" WITH SUPERUSER; ALTER USER "ec2-user" WITH SUPERUSER;
/q \q
exit exit
``` ```
4b. Edit hba_file to trust connections 4b. Edit hba_file to trust local connections
``` ```
psql psql
SHOW hba_file; SHOW hba_file;
@ -196,11 +196,10 @@ sudo service docker start
sudo usermod -aG docker ec2-user sudo usermod -aG docker ec2-user
``` ```
6. Fetch the repository and switch to this working branch 6. Fetch the repository
``` ```
go get github.com/vulcanize/vulcanizedb go get github.com/vulcanize/vulcanizedb
cd $GOPATH/src/github.com/vulcanize/vulcanizedb cd $GOPATH/src/github.com/vulcanize/vulcanizedb
git checkout ipfs_concurrency
``` ```
7. Create the db 7. Create the db
@ -212,5 +211,5 @@ createdb vulcanize_public
``` ```
cd $GOPATH/src/github.com/vulcanize/vulcanizedb/dockerfiles/super_node cd $GOPATH/src/github.com/vulcanize/vulcanizedb/dockerfiles/super_node
docker build . docker build .
docker run --network host -e VDB_PG_CONNECT=postgres://localhost:5432/vulcanize_public?sslmode=disable {IMAGE_ID} docker run --network host -e IPFS_INIT=true -e VDB_PG_NAME=vulcanize_public -e VDB_PG_HOSTNAME=localhost -e VDB_PG_PORT=5432 -e VDB_PG_USER=postgres -e VDB_PG_PASSWORD=password {IMAGE_ID}
``` ```

View File

@ -19,7 +19,7 @@
wsPath = "127.0.0.1:8080" wsPath = "127.0.0.1:8080"
[superNode.backFill] [superNode.backFill]
on = false on = true
httpPath = "" httpPath = "http://127.0.0.1:8545"
frequency = 5 frequency = 5
batchSize = 50 batchSize = 50