diff --git a/.gitignore b/.gitignore index 6801371..6079c21 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,5 @@ /.DS_Store build -.idea \ No newline at end of file +.idea +config \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..638ea63 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +FROM golang:1.22 as build + +RUN apt update -y +RUN apt upgrade -y +RUN apt install build-essential -y +#RUN apk add --no-cache git make gcc musl-dev linux-headers ca-certificates build-base + +ADD . canine-provider +WORKDIR canine-provider + +RUN LEDGER_ENABLED=false make install + +ENV PROVIDER_CHAIN_ID="jackal-1" +ENV PROVIDER_RPC="https://rpc.jackalprotocol.com:443" +ENV PROVIDER_DOMAIN="http://127.0.0.1:3333" +ENV PROVIDER_SPACE="1000000000000" +ENV PROVIDER_NAME="storage-provider" + +RUN jprovd client gen-key +RUN jprovd client config chain-id $PROVIDER_CHAIN_ID +RUN jprovd client config node $PROVIDER_RPC + +CMD ["sh", "scripts/docker.sh"] + + diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..46f4f14 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,13 @@ +version: '3.8' +services: + canine-provider: + build: . + ports: + - "3333:3333" + network_mode: "host" + volumes: + - storage:/root/.jackal-storage/storage + - "./config:/copyconfig" + +volumes: + storage: \ No newline at end of file diff --git a/jprov/jprovd/provider_commands.go b/jprov/jprovd/provider_commands.go index df296c8..1ef9702 100644 --- a/jprov/jprovd/provider_commands.go +++ b/jprov/jprovd/provider_commands.go @@ -31,6 +31,7 @@ func StartServerCommand() *cobra.Command { Args: cobra.ExactArgs(0), RunE: func(cmd *cobra.Command, args []string) error { clientCtx := client.GetClientContextFromCmd(cmd) + dbPath := utils.GetArchiveDBPath(clientCtx) archivedb, err := archive.NewDoubleRefArchiveDB(dbPath) if err != nil { @@ -69,6 +70,10 @@ func StartServerCommand() *cobra.Command { if err != nil { return err } + err = fs.Init() + if err != nil { + return err + } fs.StartFileServer(cmd) return nil }, @@ -311,6 +316,11 @@ func MigrateCommand() *cobra.Command { Long: `Migrate old file system. This will glue all blocks together into one file per fids stored in your machine`, Args: cobra.ExactArgs(0), RunE: func(cmd *cobra.Command, args []string) error { + prune, err := cmd.Flags().GetBool(types.FlagPruneFirst) + if err != nil { + return err + } + buf := bufio.NewReader(cmd.InOrStdin()) yes, err := input.GetConfirmation("Are you sure you want to migrate from old file system?", buf, cmd.ErrOrStderr()) if err != nil { @@ -374,8 +384,15 @@ func MigrateCommand() *cobra.Command { return err } + if prune { + err := fs.PruneExpiredFiles() + if err != nil { + return err + } + } utils.Migrate(clientCtx, chunkSize) - return err + + return nil }, } AddTxFlagsToCmd(cmd) @@ -393,6 +410,7 @@ func MigrateCommand() *cobra.Command { cmd.Flags().String(types.FlagProviderName, "A Storage Provider", "The name to identify this provider in block explorers.") cmd.Flags().Int64(types.FlagSleep, types.DefaultSleep, "The time, in milliseconds, before adding another proof msg to the queue.") cmd.Flags().Bool(types.FlagDoReport, types.DefaultDoReport, "Should this provider report deals (uses gas).") + cmd.Flags().Bool(types.FlagPruneFirst, false, "Should the provider prune its state before migration?") return cmd } diff --git a/jprov/types/flags.go b/jprov/types/flags.go index 591f23b..7865281 100644 --- a/jprov/types/flags.go +++ b/jprov/types/flags.go @@ -14,6 +14,7 @@ const ( FlagProviderName = "moniker" FlagSleep = "sleep" FlagDoReport = "do-report" + FlagPruneFirst = "prune" ) const ( diff --git a/scripts/docker.sh b/scripts/docker.sh new file mode 100644 index 0000000..38132fa --- /dev/null +++ b/scripts/docker.sh @@ -0,0 +1,10 @@ +cp -r /root/.jackal-storage/config /copyconfig + + +jprovd init $PROVIDER_DOMAIN $PROVIDER_SPACE "" -y || true + +sleep 10 + +jprovd start -y --moniker=$PROVIDER_NAME || true + +/bin/bash \ No newline at end of file