blob: 5d506056b51424b69cd2e97928bf9ee1d1c53159 [file] [log] [blame]
Holger Hildebrandtda7758b2020-03-16 11:30:03 +00001# Copyright 2016 the original author or authors.
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14
15# -------------
16# Build stage
17
David K. Bainbridge2d337432021-04-01 20:27:34 +000018ARG GOLANG_IMAGE=golang:1.13.8-alpine3.11
19ARG DEPLOY_IMAGE=gcr.io/distroless/static:nonroot
20ARG IMAGE_OS=linux
21ARG IMAGE_ARCH=amd64
22# hadolint ignore=DL3006
23FROM --platform=$IMAGE_OS/$IMAGE_ARCH $GOLANG_IMAGE AS build-env
Holger Hildebrandtda7758b2020-03-16 11:30:03 +000024
Matteo Scandolodcd93182020-04-29 13:21:45 -070025# Install required packages
26RUN apk add --no-cache build-base=0.5-r1
27
Holger Hildebrandtda7758b2020-03-16 11:30:03 +000028# Prepare directory structure
Matteo Scandolodcd93182020-04-29 13:21:45 -070029WORKDIR /go/src/github.com/opencord/voltha-openonu-adapter-go
Matteo Scandolobedd2502020-03-25 08:44:18 -070030
31# Copy common files.
Holger Hildebrandtfa074992020-03-27 15:42:06 +000032COPY . .
Holger Hildebrandtda7758b2020-03-16 11:30:03 +000033
Holger Hildebrandt6999fe52021-02-11 11:49:05 +000034ARG EXTRA_GO_BUILD_TAGS=""
35
Holger Hildebrandtda7758b2020-03-16 11:30:03 +000036ARG org_label_schema_version=unknown
37ARG org_label_schema_vcs_url=unknown
38ARG org_label_schema_vcs_ref=unknown
39ARG org_label_schema_build_date=unknown
40ARG org_opencord_vcs_commit_date=unknown
41ARG org_opencord_vcs_dirty=unknown
42
Matteo Scandolobedd2502020-03-25 08:44:18 -070043# Build openonu
Holger Hildebrandtda7758b2020-03-16 11:30:03 +000044SHELL ["/bin/ash", "-o", "pipefail", "-c"]
David K. Bainbridge2d337432021-04-01 20:27:34 +000045RUN \
46CGO_ENABLED=0 GOOS=$IMAGE_OS GOARCH=$IMAGE_ARCH \
47go build $EXTRA_GO_BUILD_TAGS -mod=vendor -o /go/bin/openonu \
48-ldflags \
49"-X github.com/opencord/voltha-lib-go/v4/pkg/version.version=$org_label_schema_version \
50-X github.com/opencord/voltha-lib-go/v4/pkg/version.vcsRef=$org_label_schema_vcs_ref \
51-X github.com/opencord/voltha-lib-go/v4/pkg/version.vcsDirty=$org_opencord_vcs_dirty \
52-X github.com/opencord/voltha-lib-go/v4/pkg/version.goVersion=$(go version 2>&1 | sed -E 's/.*go([0-9]+\.[0-9]+\.[0-9]+).*/\1/g') \
53-X github.com/opencord/voltha-lib-go/v4/pkg/version.os=$(go env GOHOSTOS) \
54-X github.com/opencord/voltha-lib-go/v4/pkg/version.arch=$(go env GOHOSTARCH) \
55-X github.com/opencord/voltha-lib-go/v4/pkg/version.buildTime=$org_label_schema_build_date" \
56./cmd/openonu-adapter/
Holger Hildebrandtda7758b2020-03-16 11:30:03 +000057
58# -------------
59# Image creation stage
David K. Bainbridge2d337432021-04-01 20:27:34 +000060# hadolint ignore=DL3006
61FROM --platform=$IMAGE_OS/$IMAGE_ARCH $DEPLOY_IMAGE
Holger Hildebrandtda7758b2020-03-16 11:30:03 +000062
63# Set the working directory
64WORKDIR /app
65
66# Copy required files
David K. Bainbridge2d337432021-04-01 20:27:34 +000067COPY --from=build-env /go/bin/openonu /app/openonu
Holger Hildebrandtda7758b2020-03-16 11:30:03 +000068
69# Label image
70ARG org_label_schema_version=unknown
71ARG org_label_schema_vcs_url=unknown
72ARG org_label_schema_vcs_ref=unknown
73ARG org_label_schema_build_date=unknown
74ARG org_opencord_vcs_commit_date=unknown
75ARG org_opencord_vcs_dirty=unknown
David K. Bainbridge2d337432021-04-01 20:27:34 +000076ARG IMAGE_USER=nonroot
77ARG IMAGE_GROUP=nonroot
Holger Hildebrandtda7758b2020-03-16 11:30:03 +000078
David K. Bainbridge2d337432021-04-01 20:27:34 +000079LABEL \
80org.label-schema.schema-version=1.0 \
81org.label-schema.name=voltha-openonu-adapter-go \
82org.label-schema.version=$org_label_schema_version \
83org.label-schema.vcs-url=$org_label_schema_vcs_url \
84org.label-schema.vcs-ref=$org_label_schema_vcs_ref \
85org.label-schema.build-date=$org_label_schema_build_date \
86org.opencord.vcs-commit-date=$org_opencord_vcs_commit_date \
87org.opencord.vcs-dirty=$org_opencord_vcs_dirty
88
89USER $IMAGE_USER:$IMAGE_GROUP