forked from datacommonsorg/mixer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDockerfile
57 lines (47 loc) · 2.01 KB
/
Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# Copyright 2019 Google LLC
#
# 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
#
# https://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.
################################################################################
# First stage: the grpc container.
################################################################################
FROM grpc/go AS grpc
# Only download the two files. Can `git clone` entire library if needed.
RUN mkdir -p /proto_lib/google/api/
RUN curl -sSL https://raw.githubusercontent.com/googleapis/googleapis/master/google/api/annotations.proto --output /proto_lib/google/api/annotations.proto
RUN curl -sSL https://raw.githubusercontent.com/googleapis/googleapis/master/google/api/http.proto --output /proto_lib/google/api/http.proto
COPY ./proto/mixer.proto /proto_lib
WORKDIR /proto_lib
RUN protoc \
--proto_path=/proto_lib \
--include_source_info \
--descriptor_set_out out.pb \
--go_out=plugins=grpc:. mixer.proto
################################################################################
# Second stage: the golang container.
################################################################################
FROM golang:alpine AS builder
RUN apk add --no-cache ca-certificates git
WORKDIR /mixer
# Copy the source from the current directory the working directory, excluding
# the deployment directory.
COPY . .
RUN rm -r deployment
# Copy over protobufs.
COPY --from=grpc /proto_lib/out.pb ./
COPY --from=grpc /proto_lib/mixer.pb.go ./proto
# Test.
ENV CGO_ENABLED 0
RUN go test ./...
# Install the Go app.
RUN go install ./server
ENTRYPOINT ["/go/bin/server"]