Fix build node and docker-image

- Make Dockerfile useful and minimal
- Update Makefile commands build / image
- Docker should not ignore vendor (go build -mod=vendor)
This commit is contained in:
Evgeniy Kulikov 2019-08-26 17:26:42 +03:00
parent 902125cbeb
commit 9a79c00417
No known key found for this signature in database
GPG key ID: BF6AEE0A2A699BF2
3 changed files with 48 additions and 20 deletions

View file

@ -1,3 +1,2 @@
vendor
.git .git
chains chains

View file

@ -1,16 +1,40 @@
FROM vidsyhq/go-base:latest # Builder image
LABEL maintainers="anthdm,stevenjack" FROM golang:1.12-alpine3.10 as builder
RUN set -x \
&& apk add --no-cache git \
&& mkdir -p /tmp
COPY . /neo-go
WORKDIR /neo-go
ARG REPO=repository
ARG VERSION=dev
# https://github.com/golang/go/wiki/Modules#how-do-i-use-vendoring-with-modules-is-vendoring-going-away
# go build -mod=vendor
RUN set -x \
&& export BUILD_TIME=$(date -u +"%Y-%m-%dT%H:%M:%SZ") \
&& export GOGC=off \
&& export CGO_ENABLED=0 \
&& export LDFLAGS="-X ${REPO}/config.Version=${VERSION} -X ${REPO}/config.BuildTime=${BUILD_TIME}" \
&& go build -v -mod=vendor -ldflags "${LDFLAGS}" -o /go/bin/node ./cli/main.go
# Executable image
FROM alpine:3.10
ENV NETMODE=testnet ENV NETMODE=testnet
ARG VERSION ARG VERSION
LABEL version=$VERSION LABEL version=$VERSION
ADD bin/neo-go /usr/bin/neo-go WORKDIR /
ADD config /config
RUN chmod u+x /usr/bin/neo-go ENV NETMODE=testnet
RUN mkdir -p /chains COPY --from=builder /neo-go/config /config
COPY --from=builder /go/bin/node /usr/bin/node
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
ENTRYPOINT ["/usr/bin/node"]
ENTRYPOINT ["neo-go"]
CMD ["node", "--config-path", "./config", "--testnet"] CMD ["node", "--config-path", "./config", "--testnet"]

View file

@ -3,18 +3,22 @@ BUILD_TIME = "$(shell date -u +\"%Y-%m-%dT%H:%M:%SZ\")"
REPONAME = "neo-go" REPONAME = "neo-go"
NETMODE ?= "privnet" NETMODE ?= "privnet"
REPO ?= "$(shell go list -m)"
VERSION ?= "$(shell git describe --tags 2>/dev/null | sed 's/^v//')" VERSION ?= "$(shell git describe --tags 2>/dev/null | sed 's/^v//')"
BUILD_FLAGS = "-X $(REPO)/config.Version=$(VERSION) -X $(REPO)/config.BuildTime=$(BUILD_TIME)"
build: build: deps
@echo "=> Building darwin binary" @echo "=> Building binary"
@go build -i -ldflags "-X github.com/CityOfZion/neo-go/config.Version=${VERSION}-dev -X github.com/CityOfZion/neo-go/config.BuildTime=${BUILD_TIME}" -o ./bin/neo-go ./cli/main.go @set -x \
&& export GOGC=off \
&& export CGO_ENABLED=0 \
&& echo $(VERSION)-$(BUILD_TIME) \
&& go build -v -mod=vendor -ldflags $(BUILD_FLAGS) -o ./bin/node ./cli/main.go
build-image: image: deps
docker build -t cityofzion/neo-go --build-arg VERSION=${VERSION} . @echo "=> Building image"
@docker build -t cityofzion/neo-go:latest --build-arg REPO=$(REPO) --build-arg VERSION=$(VERSION) .
build-linux: @docker build -t cityofzion/neo-go:$(VERSION) --build-arg REPO=$(REPO) --build-arg VERSION=$(VERSION) .
@echo "=> Building linux binary"
@GOOS=linux go build -i -ldflags "-X github.com/CityOfZion/neo-go/config.Version=${VERSION}-dev -X github.com/CityOfZion/neo-go/config.BuildTime=${BUILD_TIME}" -o ./bin/neo-go ./cli/main.go
check-version: check-version:
git fetch && (! git rev-list ${VERSION}) git fetch && (! git rev-list ${VERSION})
@ -26,7 +30,8 @@ clean-cluster:
@docker-compose rm -f @docker-compose rm -f
deps: deps:
@dep ensure @go mod tidy -v
@go mod vendor
push-tag: push-tag:
git checkout ${BRANCH} git checkout ${BRANCH}