fixing dockerfile and start up script
This commit is contained in:
parent
1235ec1f97
commit
b76bdc51f2
1
.gitignore
vendored
1
.gitignore
vendored
@ -16,3 +16,4 @@ db/migrations/20*.sql
|
|||||||
plugins/*.so
|
plugins/*.so
|
||||||
postgraphile/*.toml
|
postgraphile/*.toml
|
||||||
postgraphile/schema.graphql
|
postgraphile/schema.graphql
|
||||||
|
vulcanizedb.pem
|
||||||
|
@ -50,7 +50,6 @@ func init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func streamSubscribe() {
|
func streamSubscribe() {
|
||||||
log.SetLevel(log.DebugLevel)
|
|
||||||
// Prep the subscription config/filters to be sent to the server
|
// Prep the subscription config/filters to be sent to the server
|
||||||
subscriptionConfig()
|
subscriptionConfig()
|
||||||
|
|
||||||
|
@ -49,6 +49,7 @@ func init() {
|
|||||||
|
|
||||||
func syncPublishScreenAndServe() {
|
func syncPublishScreenAndServe() {
|
||||||
log.SetLevel(log.DebugLevel)
|
log.SetLevel(log.DebugLevel)
|
||||||
|
log.SetOutput(os.Stdout)
|
||||||
blockChain, ethClient, rpcClient := getBlockChainAndClients()
|
blockChain, ethClient, rpcClient := getBlockChainAndClients()
|
||||||
|
|
||||||
db := utils.LoadPostgres(databaseConfig, blockChain.Node())
|
db := utils.LoadPostgres(databaseConfig, blockChain.Node())
|
||||||
@ -93,7 +94,7 @@ func syncPublishScreenAndServe() {
|
|||||||
var wsEndpoint string
|
var wsEndpoint string
|
||||||
wsEndpoint = viper.GetString("server.wsEndpoint")
|
wsEndpoint = viper.GetString("server.wsEndpoint")
|
||||||
if wsEndpoint == "" {
|
if wsEndpoint == "" {
|
||||||
wsEndpoint = "127.0.0.1:2019"
|
wsEndpoint = "127.0.0.1:80"
|
||||||
}
|
}
|
||||||
_, _, err = rpc.StartWSEndpoint(wsEndpoint, processor.APIs(), []string{"vulcanizedb"}, nil, true)
|
_, _, err = rpc.StartWSEndpoint(wsEndpoint, processor.APIs(), []string{"vulcanizedb"}, nil, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -1,28 +1,37 @@
|
|||||||
FROM golang:alpine as builder
|
FROM golang:alpine as builder
|
||||||
|
|
||||||
RUN apk --update --no-cache add make git g++
|
RUN apk --update --no-cache add dep make git g++ linux-headers
|
||||||
# DEBUG
|
# DEBUG
|
||||||
RUN apk add busybox-extras
|
RUN apk add busybox-extras
|
||||||
|
|
||||||
# Build statically linked vDB binary (wonky path because of Dep)
|
# Get and build vulcanizedb syncAndPublish fork
|
||||||
|
RUN go get -u -d github.com/vulcanize/vulcanizedb
|
||||||
WORKDIR /go/src/github.com/vulcanize/vulcanizedb
|
WORKDIR /go/src/github.com/vulcanize/vulcanizedb
|
||||||
ADD . .
|
RUN git checkout syncAndPublish
|
||||||
RUN GCO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-extldflags "-static"' .
|
RUN dep ensure
|
||||||
|
RUN GCO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-extldflags "-static"' -o vulcanizedb .
|
||||||
|
|
||||||
# Build statically linked IPFS binary (statically linked and wonky path because we need to use custom fork)
|
# Get and build vulcanize's go-ipfs fork
|
||||||
|
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
|
||||||
ADD . .
|
RUN git remote add vulcanize https://github.com/vulcanize/go-ipfs.git
|
||||||
RUN GCO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-extldflags "-static"' .
|
RUN git fetch vulcanize
|
||||||
|
RUN git checkout -b pg_ipfs vulcanize/postgres_update
|
||||||
|
RUN dep ensure
|
||||||
|
RUN GCO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-extldflags "-static"' -o ipfs ./cmd/ipfs
|
||||||
|
|
||||||
# Build statically linked Geth binary (statically linked and wonky path because we need to use custom fork)
|
# 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
|
WORKDIR /go/src/github.com/ethereum/go-ethereum
|
||||||
ADD . .
|
RUN git remote add vulcanize https://github.com/vulcanize/go-ethereum.git
|
||||||
RUN GCO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-extldflags "-static"' .
|
RUN git fetch vulcanize
|
||||||
|
RUN git checkout -b statediff_geth vulcanize/rpc_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
|
||||||
RUN GCO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-extldflags "-static"' -tags='no_mysql no_sqlite' -o goose
|
RUN GCO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -ldflags '-extldflags "-static"' -tags='no_mysql no_sqlite' -o goose .
|
||||||
|
|
||||||
WORKDIR /go/src/github.com/vulcanize/vulcanizedb
|
WORKDIR /go/src/github.com/vulcanize/vulcanizedb
|
||||||
|
|
||||||
@ -31,16 +40,21 @@ FROM alpine
|
|||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
ARG USER
|
ARG USER
|
||||||
ARG config_file=environments/example.toml
|
ARG config_file=environments/syncPublishScreenAndServe.toml
|
||||||
ARG vdb_command=syncPublishScreenAndServe
|
|
||||||
ARG vdb_pg_connect="postgres://$USER@/vulcanize_public?sslmode=disable"
|
|
||||||
ARG vdb_dbname="vulcanize_public"
|
ARG vdb_dbname="vulcanize_public"
|
||||||
|
ARG vdb_hostname="localhost"
|
||||||
|
ARG vdb_port="5432"
|
||||||
|
ARG vdb_user="postgres"
|
||||||
|
ARG vdb_password
|
||||||
|
|
||||||
# setup environment
|
# setup environment
|
||||||
ENV VDB_COMMAND="$vdb_command"
|
ENV VDB_PG_NAME="$vdb_dbname"
|
||||||
ENV VDB_PG_CONNECT="$vdb_pg_connect"
|
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 -Du 5000 $USER
|
RUN adduser -D 5000 $USER
|
||||||
USER $USER
|
USER $USER
|
||||||
|
|
||||||
# chown first so dir is writable
|
# chown first so dir is writable
|
||||||
@ -52,10 +66,12 @@ COPY --chown=5000:5000 --from=builder /go/src/github.com/vulcanize/vulcanizedb/d
|
|||||||
COPY --from=builder /go/src/github.com/vulcanize/vulcanizedb/vulcanizedb vulcanizedb
|
COPY --from=builder /go/src/github.com/vulcanize/vulcanizedb/vulcanizedb vulcanizedb
|
||||||
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
|
COPY --from=builder /go/src/github.com/ipfs/go-ipfs/ipfs ipfs
|
||||||
COPY --from=builder /go/src/github.com/ethereum/go-ethereum geth
|
COPY --from=builder /go/src/github.com/ethereum/go-ethereum/geth geth
|
||||||
|
|
||||||
# DEBUG
|
# DEBUG
|
||||||
COPY --from=builder /usr/bin/telnet /bin/telnet
|
COPY --from=builder /usr/bin/telnet /bin/telnet
|
||||||
|
|
||||||
|
EXPOSE 80
|
||||||
|
|
||||||
CMD ["./startup_script.sh"]
|
CMD ["./startup_script.sh"]
|
||||||
|
@ -1,37 +1,71 @@
|
|||||||
#!/usr/bin/env bash
|
#!/bin/sh
|
||||||
# Runs the migrations and starts the syncPublishScreenAndServe service
|
# Runs the db migrations and starts the seed node services
|
||||||
|
|
||||||
# Exit if the variable tests fail
|
# Exit if the variable tests fail
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
# Check the database variables are set
|
# Check the database variables are set
|
||||||
test $DATABASE_NAME
|
test $VDB_PG_NAME
|
||||||
test $DATABASE_HOSTNAME
|
test $VDB_PG_HOSTNAME
|
||||||
test $DATABASE_PORT
|
test $VDB_PG_PORT
|
||||||
test $DATABASE_USER
|
test $VDB_PG_USER
|
||||||
test $DATABASE_PASSWORD
|
|
||||||
|
|
||||||
# Export our database variables so that the IPFS Postgres plugin can use them
|
|
||||||
export IPFS_PGHOST=$DATABASE_HOSTNAME
|
|
||||||
export IPFS_PGUSER=$DATABASE_USER
|
|
||||||
export IPFS_PGDATABASE=$DATABASE_NAME
|
|
||||||
export IPFS_PGPORT=$DATABASE_PORT
|
|
||||||
export IPFS_PGPASSWORD=$DATABASE_PASSWORD
|
|
||||||
|
|
||||||
# Construct the connection string for postgres
|
|
||||||
CONNECT_STRING=postgresql://$DATABASE_USER:$DATABASE_PASSWORD@$DATABASE_HOSTNAME:$DATABASE_PORT/$DATABASE_NAME?sslmode=disable
|
|
||||||
echo "Connecting with: $CONNECT_STRING"
|
|
||||||
|
|
||||||
set +e
|
set +e
|
||||||
|
|
||||||
|
# Export our database variables so that the IPFS Postgres plugin can use them
|
||||||
|
export IPFS_PGHOST=$VDB_PG_HOSTNAME
|
||||||
|
export IPFS_PGUSER=$VDB_PG_USER
|
||||||
|
export IPFS_PGDATABASE=$VDB_PG_NAME
|
||||||
|
export IPFS_PGPORT=$VDB_PG_PORT
|
||||||
|
export IPFS_PGPASSWORD=$VDB_PG_PASSWORD
|
||||||
|
|
||||||
|
# Construct the connection string for postgres
|
||||||
|
VDB_PG_CONNECT=postgresql://$VDB_PG_USER:$VDB_PG_PASSWORD@$VDB_PG_HOSTNAME:$VDB_PG_PORT/$VDB_PG_NAME?sslmode=disable
|
||||||
|
|
||||||
# Run the DB migrations
|
# Run the DB migrations
|
||||||
./goose postgres "$CONNECT_STRING" up
|
echo "Connecting with: $VDB_PG_CONNECT"
|
||||||
|
echo "Running database migrations"
|
||||||
|
./goose -dir migrations/vulcanizedb postgres "$VDB_PG_CONNECT" up
|
||||||
|
|
||||||
|
# If the db migrations ran without err
|
||||||
if [ $? -eq 0 ]; then
|
if [ $? -eq 0 ]; then
|
||||||
# Fire up the services
|
# Initialize PG-IPFS
|
||||||
ipfs ipfs init --profile=postgresds &
|
echo "Initializing Postgres-IPFS profile"
|
||||||
geth --statediff --statediff.streamblock --ws --syncmode=full &
|
./ipfs init --profile=postgresds
|
||||||
./vulcanizedb syncPublishScreenAndServe --config environments/seedNodeStaging.toml &
|
|
||||||
else
|
else
|
||||||
echo "Could not run migrations. Are the database details correct?"
|
echo "Could not run migrations. Are the database details correct?"
|
||||||
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# If IPFS initialization was successful
|
||||||
|
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
|
||||||
|
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"
|
||||||
|
# And then spin up the syncPublishScreenAndServe Vulcanizedb service
|
||||||
|
echo "Beginning the syncPublishScreenAndServe vulcanizedb process"
|
||||||
|
./vulcanizedb syncPublishScreenAndServe --config=config.toml 2>&1 | tee -a log.txt &
|
||||||
|
else
|
||||||
|
echo "Could not initialize Postgres backed IPFS profile. Are the database details correct?"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If Vulcanizedb startup was successful
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo "Seed node successfully booted"
|
||||||
|
else
|
||||||
|
echo "Could not start vulcanizedb syncPublishScreenAndServe process. Is the config file correct?"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
wait
|
wait
|
||||||
|
40
environments/seedNodeSubscription.toml
Normal file
40
environments/seedNodeSubscription.toml
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
[subscription]
|
||||||
|
path = "ws://127.0.0.1:80"
|
||||||
|
backfill = true
|
||||||
|
backfillOnly = false
|
||||||
|
startingBlock = 0
|
||||||
|
endingBlock = 0
|
||||||
|
[subscription.headerFilter]
|
||||||
|
off = false
|
||||||
|
finalOnly = true
|
||||||
|
[subscription.trxFilter]
|
||||||
|
off = false
|
||||||
|
src = [
|
||||||
|
"0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe",
|
||||||
|
]
|
||||||
|
dst = [
|
||||||
|
"0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe",
|
||||||
|
]
|
||||||
|
[subscription.receiptFilter]
|
||||||
|
off = false
|
||||||
|
topic0s = [
|
||||||
|
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
|
||||||
|
"0x930a61a57a70a73c2a503615b87e2e54fe5b9cdeacda518270b852296ab1a377"
|
||||||
|
]
|
||||||
|
[subscription.stateFilter]
|
||||||
|
off = false
|
||||||
|
addresses = [
|
||||||
|
"0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe"
|
||||||
|
]
|
||||||
|
intermediateNodes = false
|
||||||
|
[subscription.storageFilter]
|
||||||
|
off = true
|
||||||
|
addresses = [
|
||||||
|
"",
|
||||||
|
""
|
||||||
|
]
|
||||||
|
storageKeys = [
|
||||||
|
"",
|
||||||
|
""
|
||||||
|
]
|
||||||
|
intermediateNodes = false
|
@ -1,5 +1,5 @@
|
|||||||
[database]
|
[database]
|
||||||
name = "vulcanize_demo"
|
name = "vulcanize_public"
|
||||||
hostname = "localhost"
|
hostname = "localhost"
|
||||||
port = 5432
|
port = 5432
|
||||||
|
|
||||||
@ -9,45 +9,4 @@
|
|||||||
|
|
||||||
[server]
|
[server]
|
||||||
ipcPath = "/Users/iannorden/.vulcanize/vulcanize.ipc"
|
ipcPath = "/Users/iannorden/.vulcanize/vulcanize.ipc"
|
||||||
wsEndpoint = "127.0.0.1:2019"
|
wsEndpoint = "127.0.0.1:80"
|
||||||
|
|
||||||
[subscription]
|
|
||||||
path = "ws://127.0.0.1:2019"
|
|
||||||
backfill = true
|
|
||||||
backfillOnly = false
|
|
||||||
startingBlock = 0
|
|
||||||
endingBlock = 0
|
|
||||||
[subscription.headerFilter]
|
|
||||||
off = false
|
|
||||||
finalOnly = true
|
|
||||||
[subscription.trxFilter]
|
|
||||||
off = false
|
|
||||||
src = [
|
|
||||||
"0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe",
|
|
||||||
]
|
|
||||||
dst = [
|
|
||||||
"0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe",
|
|
||||||
]
|
|
||||||
[subscription.receiptFilter]
|
|
||||||
off = false
|
|
||||||
topic0s = [
|
|
||||||
"0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
|
|
||||||
"0x930a61a57a70a73c2a503615b87e2e54fe5b9cdeacda518270b852296ab1a377"
|
|
||||||
]
|
|
||||||
[subscription.stateFilter]
|
|
||||||
off = false
|
|
||||||
addresses = [
|
|
||||||
"0xde0B295669a9FD93d5F28D9Ec85E40f4cb697BAe"
|
|
||||||
]
|
|
||||||
intermediateNodes = false
|
|
||||||
[subscription.storageFilter]
|
|
||||||
off = true
|
|
||||||
addresses = [
|
|
||||||
"",
|
|
||||||
""
|
|
||||||
]
|
|
||||||
storageKeys = [
|
|
||||||
"",
|
|
||||||
""
|
|
||||||
]
|
|
||||||
intermediateNodes = false
|
|
||||||
|
1
vendor/github.com/ipfs/go-ipfs/plugin/loader/loader.go
generated
vendored
1
vendor/github.com/ipfs/go-ipfs/plugin/loader/loader.go
generated
vendored
@ -30,7 +30,6 @@ type PluginLoader struct {
|
|||||||
func NewPluginLoader(pluginDir string) (*PluginLoader, error) {
|
func NewPluginLoader(pluginDir string) (*PluginLoader, error) {
|
||||||
plMap := make(map[string]plugin.Plugin)
|
plMap := make(map[string]plugin.Plugin)
|
||||||
for _, v := range preloadPlugins {
|
for _, v := range preloadPlugins {
|
||||||
println(v.Name())
|
|
||||||
plMap[v.Name()] = v
|
plMap[v.Name()] = v
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user