diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000000..e589eea63c --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +.git +bin +skywire +ci_scripts +apps +integration diff --git a/docker/images/node/Dockerfile b/docker/images/node/Dockerfile new file mode 100644 index 0000000000..efa78efa5a --- /dev/null +++ b/docker/images/node/Dockerfile @@ -0,0 +1,38 @@ +# Builder +# ARG builder_base=golang:alpine +ARG base=alpine +FROM golang:alpine as builder + +ARG CGO_ENABLED=0 +ENV CGO_ENABLED=${CGO_ENABLED} \ + GOOS=linux \ + GOARCH=amd64 \ + GO111MODULE=on + +COPY . skywire + +WORKDIR skywire + +RUN go build -mod=vendor -tags netgo -ldflags="-w -s" \ + -o skywire-node cmd/skywire-node/skywire-node.go &&\ + go build -mod=vendor -ldflags="-w -s" -o ./apps/skychat.v1.0 ./cmd/apps/skychat &&\ + go build -mod=vendor -ldflags="-w -s" -o ./apps/helloworld.v1.0 ./cmd/apps/helloworld &&\ + go build -mod=vendor -ldflags="-w -s" -o ./apps/socksproxy.v1.0 ./cmd/apps/therealproxy &&\ + go build -mod=vendor -ldflags="-w -s" -o ./apps/socksproxy-client.v1.0 ./cmd/apps/therealproxy-client &&\ + go build -mod=vendor -ldflags="-w -s" -o ./apps/SSH.v1.0 ./cmd/apps/therealssh &&\ + go build -mod=vendor -ldflags="-w -s" -o ./apps/SSH-client.v1.0 ./cmd/apps/therealssh-client + + +## Resulting image +FROM ${base} as node-runner + +COPY --from=builder /go/skywire/skywire-node skywire-node +COPY --from=builder /go/skywire/apps bin/apps +COPY --from=builder /go/skywire/docker/images/node/update.sh update.sh + +RUN ./update.sh + +ENTRYPOINT [ "./skywire-node" ] + +# default target +FROM node-runner diff --git a/docker/images/node/update.sh b/docker/images/node/update.sh new file mode 100755 index 0000000000..8b78e26aee --- /dev/null +++ b/docker/images/node/update.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +if type apt > /dev/null; then + apt-get update && apt-get install -y --no-install-recommends \ + ca-certificates \ + && rm -rf /var/lib/apt/lists/* +fi + +if type apk > /dev/null; then + + apk update + apk upgrade + apk add --no-cache ca-certificates openssl iproute2 + update-ca-certificates --fresh + apk add iproute2 +fi