From bf7df5d5b50ae23600d4ae1119ddf23183f099be Mon Sep 17 00:00:00 2001 From: Dmitrii Dolgov Date: Fri, 2 Feb 2018 10:39:39 +0100 Subject: [PATCH 1/2] Add debug mode You can specify an environment variable DEBUG 1/0 to enable/disable debug mode. Debug mode assumes delve dependency for remote debugging, and debugging symbols for go build. --- Makefile | 14 ++++++++++++-- docker/DebugDockerfile | 10 ++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) create mode 100644 docker/DebugDockerfile diff --git a/Makefile b/Makefile index 4032c7dfe..5db4f2097 100644 --- a/Makefile +++ b/Makefile @@ -8,9 +8,19 @@ ifeq ($(RACE),1) CGO_ENABLED=1 endif +ifeq ($(DEBUG),1) + BUILD_FLAGS += -gcflags "-N -l" +endif + LOCAL_BUILD_FLAGS ?= $(BUILD_FLAGS) LDFLAGS ?= -X=main.version=$(VERSION) -DOCKERFILE = docker/Dockerfile + +ifeq ($(DEBUG),1) + DOCKERFILE = docker/DebugDockerfile +else + DOCKERFILE = docker/Dockerfile +endif + IMAGE ?= registry.opensource.zalan.do/acid/$(BINARY) TAG ?= $(VERSION) GITHEAD = $(shell git rev-parse --short HEAD) @@ -43,7 +53,7 @@ docker-context: scm-source.json linux cp build/linux/${BINARY} scm-source.json docker/build/ docker: ${DOCKERFILE} docker-context - cd docker && docker build --rm -t "$(IMAGE):$(TAG)" . + docker build --rm -t "$(IMAGE):$(TAG)" -f "${DOCKERFILE}" . indocker-race: docker run --rm -v "${GOPATH}":"${GOPATH}" -e GOPATH="${GOPATH}" -e RACE=1 -w ${PWD} golang:1.8.1 bash -c "make linux" diff --git a/docker/DebugDockerfile b/docker/DebugDockerfile new file mode 100644 index 000000000..b33cec4dd --- /dev/null +++ b/docker/DebugDockerfile @@ -0,0 +1,10 @@ +FROM alpine +MAINTAINER Team ACID @ Zalando + +# We need root certificates to deal with teams api over https +RUN apk --no-cache add ca-certificates go git musl-dev +RUN go get github.com/derekparker/delve/cmd/dlv + +COPY build/* / + +CMD ["/root/go/bin/dlv", "--listen=:777", "--headless=true", "--api-version=2", "exec", "/postgres-operator"] From 09abdce09549a5603d0bf04d8da7a1253c467e85 Mon Sep 17 00:00:00 2001 From: Dmitrii Dolgov Date: Fri, 2 Feb 2018 11:17:12 +0100 Subject: [PATCH 2/2] Improvements for debug mode Return back `cd docker` part to be less invasive, and add `-debug` postfix for image --- Makefile | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 5db4f2097..34e8e22a2 100644 --- a/Makefile +++ b/Makefile @@ -8,18 +8,9 @@ ifeq ($(RACE),1) CGO_ENABLED=1 endif -ifeq ($(DEBUG),1) - BUILD_FLAGS += -gcflags "-N -l" -endif - LOCAL_BUILD_FLAGS ?= $(BUILD_FLAGS) LDFLAGS ?= -X=main.version=$(VERSION) - -ifeq ($(DEBUG),1) - DOCKERFILE = docker/DebugDockerfile -else - DOCKERFILE = docker/Dockerfile -endif +DOCKERDIR = docker IMAGE ?= registry.opensource.zalan.do/acid/$(BINARY) TAG ?= $(VERSION) @@ -31,6 +22,14 @@ VERSION ?= $(shell git describe --tags --always --dirty) DIRS := cmd pkg PKG := `go list ./... | grep -v /vendor/` +ifeq ($(DEBUG),1) + DOCKERFILE = DebugDockerfile + DEBUG_POSTFIX := -debug + BUILD_FLAGS += -gcflags "-N -l" +else + DOCKERFILE = Dockerfile +endif + PATH := $(GOPATH)/bin:$(PATH) SHELL := env PATH=$(PATH) $(SHELL) @@ -52,8 +51,8 @@ docker-context: scm-source.json linux mkdir -p docker/build/ cp build/linux/${BINARY} scm-source.json docker/build/ -docker: ${DOCKERFILE} docker-context - docker build --rm -t "$(IMAGE):$(TAG)" -f "${DOCKERFILE}" . +docker: ${DOCKERDIR}/${DOCKERFILE} docker-context + cd "${DOCKERDIR}" && docker build --rm -t "$(IMAGE):$(TAG)$(DEBUG_POSTFIX)" -f "${DOCKERFILE}" . indocker-race: docker run --rm -v "${GOPATH}":"${GOPATH}" -e GOPATH="${GOPATH}" -e RACE=1 -w ${PWD} golang:1.8.1 bash -c "make linux"