From 4e57b1e0aa97fe1fc8e277b2ef0be4b3367010e9 Mon Sep 17 00:00:00 2001
From: Ahmet Alp Balkan <ahmetb@google.com>
Date: Thu, 28 Jun 2018 17:09:22 -0700
Subject: [PATCH] optimize dockerfile caching for go builds

Signed-off-by: Ahmet Alp Balkan <ahmetb@google.com>
---
 src/checkoutservice/Dockerfile       | 7 +++++++
 src/productcatalogservice/Dockerfile | 6 ++++++
 src/shippingservice/Dockerfile       | 5 +++++
 3 files changed, 18 insertions(+)

diff --git a/src/checkoutservice/Dockerfile b/src/checkoutservice/Dockerfile
index c69a206..ef6e45f 100644
--- a/src/checkoutservice/Dockerfile
+++ b/src/checkoutservice/Dockerfile
@@ -1,7 +1,14 @@
 FROM golang:1.10-alpine as builder
 RUN apk add --no-cache ca-certificates git
 WORKDIR /go/src/checkoutservice
+
+# get known dependencies
+RUN go get -d github.com/google/uuid \
+    google.golang.org/grpc \
+    google.golang.org/grpc/codes \
+    google.golang.org/grpc/status
 COPY . .
+# get remaining dependencies
 RUN go get -d ./...
 RUN go build -o /checkoutservice .
 
diff --git a/src/productcatalogservice/Dockerfile b/src/productcatalogservice/Dockerfile
index b98ee61..1e4d411 100644
--- a/src/productcatalogservice/Dockerfile
+++ b/src/productcatalogservice/Dockerfile
@@ -3,7 +3,13 @@ RUN apk add --no-cache \
   ca-certificates \
   git
 WORKDIR /src/microservices-demo/productcatalogservice
+# get known dependencies
+RUN go get -d google.golang.org/grpc \
+    google.golang.org/grpc/codes \
+    google.golang.org/grpc/status
+
 COPY . .
+# get remaining dependencies
 RUN go get -d ./...
 RUN go build -o /productcatalogservice .
 
diff --git a/src/shippingservice/Dockerfile b/src/shippingservice/Dockerfile
index 8d66d35..b2c4c13 100644
--- a/src/shippingservice/Dockerfile
+++ b/src/shippingservice/Dockerfile
@@ -3,7 +3,12 @@ RUN apk add --no-cache \
   ca-certificates \
   git
 WORKDIR /src/microservices-demo/shippingservice
+# get known dependencies
+RUN go get -d golang.org/x/net/context \
+google.golang.org/grpc \
+google.golang.org/grpc/reflection
 COPY . .
+# get other dependencies
 RUN go get -d ./...
 RUN go build -o /shippingservice .