[VOL-2993] Using a single Dockerfile for images with and without profiling
Adding environment variable support to easily build profiled image
Change-Id: Ic09f71702e1e2007b321e5e76b5785bb31170420
diff --git a/Makefile b/Makefile
index 6f257c0..3ccec0f 100644
--- a/Makefile
+++ b/Makefile
@@ -77,11 +77,11 @@
## Docker targets
build: docker-build ## Alias for 'docker build'
-docker-build: local-protos local-lib-go ## Build openolt adapter docker image
+docker-build: local-protos local-lib-go ## Build openolt adapter docker image (set BUILD_PROFILED=true to also build the profiled image)
docker build $(DOCKER_BUILD_ARGS) -t ${ADAPTER_IMAGENAME} -f docker/Dockerfile.openolt .
-
-docker-build-profile: local-protos local-lib-go ## Build openolt adapter docker image with profiling enabled
- docker build $(DOCKER_BUILD_ARGS) -t ${ADAPTER_IMAGENAME}-profile -f docker/Dockerfile.openolt_profile .
+ifdef BUILD_PROFILED
+ docker build $(DOCKER_BUILD_ARGS) --build-arg EXTRA_GO_BUILD_TAGS="-tags profile" -t ${ADAPTER_IMAGENAME}-profile -f docker/Dockerfile.openolt .
+endif
docker-push: ## Push the docker images to an external repository
docker push ${ADAPTER_IMAGENAME}
diff --git a/cmd/openolt-adapter/profile.go b/cmd/openolt-adapter/profile.go
index 1416756..f539afd 100644
--- a/cmd/openolt-adapter/profile.go
+++ b/cmd/openolt-adapter/profile.go
@@ -19,7 +19,6 @@
package main
import (
- "fmt"
"net/http"
_ "net/http/pprof"
)
diff --git a/docker/Dockerfile.openolt b/docker/Dockerfile.openolt
index ded4efa..e78ec06 100644
--- a/docker/Dockerfile.openolt
+++ b/docker/Dockerfile.openolt
@@ -24,6 +24,8 @@
WORKDIR /go/src/github.com/opencord/voltha-openolt-adapter
COPY . .
+ARG EXTRA_GO_BUILD_TAGS=""
+
ARG org_label_schema_version=unknown
ARG org_label_schema_vcs_url=unknown
ARG org_label_schema_vcs_ref=unknown
@@ -33,7 +35,7 @@
# Build openolt
SHELL ["/bin/ash", "-o", "pipefail", "-c"]
-RUN go build -mod=vendor -o /go/bin/openolt \
+RUN go build $EXTRA_GO_BUILD_TAGS -mod=vendor -o /go/bin/openolt \
-ldflags \
"-X github.com/opencord/voltha-lib-go/v3/pkg/version.version=$org_label_schema_version \
-X github.com/opencord/voltha-lib-go/v3/pkg/version.vcsRef=$org_label_schema_vcs_ref \
diff --git a/docker/Dockerfile.openolt_profile b/docker/Dockerfile.openolt_profile
deleted file mode 100644
index e86b1ba..0000000
--- a/docker/Dockerfile.openolt_profile
+++ /dev/null
@@ -1,73 +0,0 @@
-# Copyright 2016 the original author or authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# -------------
-# Build stage
-
-FROM golang:1.13.8-alpine3.11 AS build-env
-
-# Install required packages
-RUN apk add --no-cache build-base=0.5-r1
-
-# Prepare directory structure
-WORKDIR /go/src/github.com/opencord/voltha-openolt-adapter
-COPY . .
-
-ARG org_label_schema_version=unknown
-ARG org_label_schema_vcs_url=unknown
-ARG org_label_schema_vcs_ref=unknown
-ARG org_label_schema_build_date=unknown
-ARG org_opencord_vcs_commit_date=unknown
-ARG org_opencord_vcs_dirty=unknown
-
-# Build openolt
-SHELL ["/bin/ash", "-o", "pipefail", "-c"]
-RUN go build -tags profile -mod=vendor -o /go/bin/openolt \
- -ldflags \
- "-X github.com/opencord/voltha-openolt-adapter/config/version.version=$org_label_schema_version \
- -X github.com/opencord/voltha-openolt-adapter/config/version.vcsRef=$org_label_schema_vcs_ref \
- -X github.com/opencord/voltha-openolt-adapter/config/version.vcsDirty=$org_opencord_vcs_dirty \
- -X github.com/opencord/voltha-openolt-adapter/config/version.goVersion=$(go version 2>&1 | sed -E 's/.*go([0-9]+\.[0-9]+\.[0-9]+).*/\1/g') \
- -X github.com/opencord/voltha-openolt-adapter/config/version.os=$(go env GOHOSTOS) \
- -X github.com/opencord/voltha-openolt-adapter/config/version.arch=$(go env GOHOSTARCH) \
- -X github.com/opencord/voltha-openolt-adapter/config/version.buildTime=$org_label_schema_build_date" \
- ./cmd/openolt-adapter/
-
-# -------------
-# Image creation stage
-
-FROM alpine:3.11.3
-
-# Set the working directory
-WORKDIR /app
-
-# Copy required files
-COPY --from=build-env /go/bin/openolt /app/
-
-# Label image
-ARG org_label_schema_version=unknown
-ARG org_label_schema_vcs_url=unknown
-ARG org_label_schema_vcs_ref=unknown
-ARG org_label_schema_build_date=unknown
-ARG org_opencord_vcs_commit_date=unknown
-ARG org_opencord_vcs_dirty=unknown
-
-LABEL org.label-schema.schema-version=1.0 \
- org.label-schema.name=voltha-openolt-adapter-go \
- org.label-schema.version=$org_label_schema_version \
- org.label-schema.vcs-url=$org_label_schema_vcs_url \
- org.label-schema.vcs-ref=$org_label_schema_vcs_ref \
- org.label-schema.build-date=$org_label_schema_build_date \
- org.opencord.vcs-commit-date=$org_opencord_vcs_commit_date \
- org.opencord.vcs-dirty=$org_opencord_vcs_dirty