I have Makefile that supports build in docker image, part of it looks
something like this:
NAME := <name>
PACKAGE := github.com/username/repo
.PHONY: build
build: clean gobuild ## Build application
.PHONY: gobuild
gobuild: LDFLAGS=$(shell ./scripts/gen-ldflags.sh $(VERSION))
gobuild:
@echo "Building '$(NAME)'"
@env go generate -mod=vendor
@CGO_ENABLED=0 go build -mod=vendor --ldflags "$(LDFLAGS)" -tags netgo .
.PHONY: clean
clean: ## Remove build artifacts
@echo "==> Cleaning build artifacts..."
@rm -fv coverage.txt
@find . -name '*.test' | xargs rm -fv
@rm -fv $(NAME)
.PHONY: build-in-docker
build-in-docker:
@docker run --rm \
-v $(shell pwd):/go/src/$(PACKAGE) \
-w /go/src/$(PACKAGE) \
-e GO111MODULE=on \
golang:latest \
make build
As you can see, there are some external scripts called (like
gen-ldflags.sh) and docker build is just invoking "make build" inside
docker container. I do not use this for CI (GitLab CI is already setup to
use docker images), so that is why I use latest tag (in CI I use explicit
version of Go).
There are some leftovers from earlier times, like mounting working dir to
GOPATH, which is not needed if GO111MODULE is set.
On Friday, February 1, 2019 at 4:48:01 AM UTC+1, Keith Brown wrote:
>
> does anyone use docker golang image to compile? if so,how is your setup?
>
>
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.