Adjust link to Airflow repository (#26)
[airflow-on-k8s-operator.git] / Dockerfile
index 3ab6ccdae2ef926ec3df28530f31c9961aaed6fe..9bfc700f55fae134fb877072b0998606503aec5a 100644 (file)
@@ -1,19 +1,43 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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 the manager binary
-FROM golang:1.10.3 as builder
+FROM golang:1.13 as builder
 
-# Copy in the go src
-WORKDIR /go/src/k8s.io/airflow-operator
-COPY pkg/    pkg/
-COPY cmd/    cmd/
+WORKDIR /workspace
 COPY vendor/ vendor/
+# Copy the Go Modules manifests
+COPY go.mod go.mod
+COPY go.sum go.sum
+# cache deps before building and copying source so that we don't need to re-download as much
+# and so that source changes don't invalidate our downloaded layer
+RUN go mod download
+
+# Copy the go source
+COPY main.go main.go
+COPY api/ api/
+COPY controllers/ controllers/
 
 # Build
-RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o manager k8s.io/airflow-operator/cmd/manager
+RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on go build -a -o manager main.go
+
+# Use distroless as minimal base image to package the manager binary
+# Refer to https://github.com/GoogleContainerTools/distroless for more details
+FROM gcr.io/distroless/static:nonroot
+WORKDIR /
+COPY --from=builder /workspace/manager .
+USER nonroot:nonroot
 
-# Copy the controller-manager into a thin image
-FROM ubuntu:latest
-WORKDIR /root/
-COPY --from=builder /go/src/k8s.io/airflow-operator/manager .
-COPY templates/ templates/
-COPY config/crds/ crds/
-ENTRYPOINT ["./manager"]
+ENTRYPOINT ["/manager"]