From 49975264a8d37aa9af1a2b71015059245c0c2e0b Mon Sep 17 00:00:00 2001 From: Anton Evangelatov Date: Thu, 3 Jan 2019 15:32:58 +0100 Subject: swarm/docker: Dockerfile for swarm:edge docker image (#18386) --- swarm/api/http/middleware.go | 2 +- swarm/docker/Dockerfile | 23 +++++++++++++++++++++++ swarm/docker/run-smoke.sh | 7 +++++++ swarm/docker/run.sh | 26 ++++++++++++++++++++++++++ 4 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 swarm/docker/Dockerfile create mode 100755 swarm/docker/run-smoke.sh create mode 100755 swarm/docker/run.sh (limited to 'swarm') diff --git a/swarm/api/http/middleware.go b/swarm/api/http/middleware.go index f7f819eab..320da3046 100644 --- a/swarm/api/http/middleware.go +++ b/swarm/api/http/middleware.go @@ -80,7 +80,7 @@ func InitLoggingResponseWriter(h http.Handler) http.Handler { h.ServeHTTP(writer, r) ts := time.Since(tn) - log.Info("request served", "ruid", GetRUID(r.Context()), "code", writer.statusCode, "time", ts*time.Millisecond) + log.Info("request served", "ruid", GetRUID(r.Context()), "code", writer.statusCode, "time", ts) metrics.GetOrRegisterResettingTimer(fmt.Sprintf("http.request.%s.time", r.Method), nil).Update(ts) metrics.GetOrRegisterResettingTimer(fmt.Sprintf("http.request.%s.%d.time", r.Method, writer.statusCode), nil).Update(ts) }) diff --git a/swarm/docker/Dockerfile b/swarm/docker/Dockerfile new file mode 100644 index 000000000..1ee4e9734 --- /dev/null +++ b/swarm/docker/Dockerfile @@ -0,0 +1,23 @@ +FROM golang:1.11-alpine as builder + +ARG VERSION + +RUN apk add --update git gcc g++ linux-headers +RUN mkdir -p $GOPATH/src/github.com/ethereum && \ + cd $GOPATH/src/github.com/ethereum && \ + git clone https://github.com/ethersphere/go-ethereum && \ + cd $GOPATH/src/github.com/ethereum/go-ethereum && \ + git checkout ${VERSION} && \ + go install -ldflags "-X main.gitCommit=${VERSION}" ./cmd/swarm && \ + go install -ldflags "-X main.gitCommit=${VERSION}" ./cmd/swarm/swarm-smoke && \ + go install -ldflags "-X main.gitCommit=${VERSION}" ./cmd/geth && \ + cp $GOPATH/bin/swarm /swarm && cp $GOPATH/bin/geth /geth && cp $GOPATH/bin/swarm-smoke /swarm-smoke + + +# Release image with the required binaries and scripts +FROM alpine:3.8 +WORKDIR / +COPY --from=builder /swarm /geth /swarm-smoke / +ADD run.sh /run.sh +ADD run-smoke.sh /run-smoke.sh +ENTRYPOINT ["/run.sh"] diff --git a/swarm/docker/run-smoke.sh b/swarm/docker/run-smoke.sh new file mode 100755 index 000000000..ba57a7ecd --- /dev/null +++ b/swarm/docker/run-smoke.sh @@ -0,0 +1,7 @@ +#!/bin/sh + +set -o errexit +set -o pipefail +set -o nounset + +/swarm-smoke $@ 2>&1 || true diff --git a/swarm/docker/run.sh b/swarm/docker/run.sh new file mode 100755 index 000000000..3e613b56d --- /dev/null +++ b/swarm/docker/run.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +set -o errexit +set -o pipefail +set -o nounset + +PASSWORD=${PASSWORD:-} +DATADIR=${DATADIR:-/root/.ethereum/} + +if [ "$PASSWORD" == "" ]; then echo "Password must be set, in order to use swarm non-interactively." && exit 1; fi + +echo $PASSWORD > /password + +KEYFILE=`find $DATADIR | grep UTC | head -n 1` || true +if [ ! -f "$KEYFILE" ]; then echo "No keyfile found. Generating..." && /geth --datadir $DATADIR --password /password account new; fi +KEYFILE=`find $DATADIR | grep UTC | head -n 1` || true +if [ ! -f "$KEYFILE" ]; then echo "Could not find nor generate a BZZ keyfile." && exit 1; else echo "Found keyfile $KEYFILE"; fi + +VERSION=`/swarm version` +echo "Running Swarm:" +echo $VERSION + +export BZZACCOUNT="`echo -n $KEYFILE | tail -c 40`" || true +if [ "$BZZACCOUNT" == "" ]; then echo "Could not parse BZZACCOUNT from keyfile." && exit 1; fi + +exec /swarm --bzzaccount=$BZZACCOUNT --password /password --datadir $DATADIR $@ 2>&1 -- cgit v1.2.3