Add multi-stage docker build (#587)

This commit is contained in:
Vinrobot
2019-05-31 14:47:28 +02:00
committed by Victor Vrantchan
parent 438fdfa990
commit 577e4c9538
5 changed files with 44 additions and 21 deletions

View File

@@ -1,8 +1,23 @@
FROM alpine:3.7
FROM golang:latest as builder
WORKDIR /go/src/github.com/micromdm/micromdm/
ENV CGO_ENABLED=0 \
GOARCH=amd64 \
GOOS=linux
COPY . .
RUN make deps
RUN make
FROM alpine:latest
RUN apk --update add ca-certificates
COPY ./build/linux/micromdm /usr/bin
COPY --from=builder /go/src/github.com/micromdm/micromdm/build/linux/micromdm /usr/bin/
COPY --from=builder /go/src/github.com/micromdm/micromdm/build/linux/mdmctl /usr/bin/
EXPOSE 80 443
VOLUME ["/var/db/micromdm"]

View File

@@ -17,7 +17,7 @@ REVSHORT = $(shell git rev-parse --short HEAD)
USER = $(shell whoami)
GOVERSION = $(shell go version | awk '{print $$3}')
NOW = $(shell date -u +"%Y-%m-%dT%H:%M:%SZ")
SHELL = /bin/bash
SHELL = /bin/sh
ifndef ($(DOCKER_IMAGE_NAME))
DOCKER_IMAGE_NAME = micromdm/micromdm
@@ -27,7 +27,7 @@ DOCKER_IMAGE_TAG = $(shell echo ${VERSION} | sed 's/^v//')
ifneq ($(OS), Windows_NT)
CURRENT_PLATFORM = linux
ifeq ($(shell uname), Darwin)
SHELL := /bin/bash
SHELL := /bin/sh
CURRENT_PLATFORM = darwin
endif
else
@@ -48,7 +48,7 @@ BUILD_VERSION = "\
-X github.com/micromdm/go4/version.goVersion=${GOVERSION} \
-X github.com/micromdm/micromdm/dep.version=${VERSION}"
gomodcheck:
gomodcheck:
@go help mod > /dev/null || (@echo micromdm requires Go version 1.11 or higher && exit 1)
deps: gomodcheck

View File

@@ -69,26 +69,33 @@ const homePage = `<!doctype html>
func serve(args []string) error {
flagset := flag.NewFlagSet("serve", flag.ExitOnError)
var (
flConfigPath = flagset.String("config-path", "/var/db/micromdm", "path to configuration directory")
flServerURL = flagset.String("server-url", "", "public HTTPS url of your server")
flConfigPath = flagset.String("config-path", env.String("MICROMDM_CONFIG_PATH", "/var/db/micromdm"), "Path to configuration directory")
flServerURL = flagset.String("server-url", env.String("MICROMDM_SERVER_URL", ""), "Public HTTPS url of your server")
flAPIKey = flagset.String("api-key", env.String("MICROMDM_API_KEY", ""), "API Token for mdmctl command")
flTLS = flagset.Bool("tls", true, "use https")
flTLSCert = flagset.String("tls-cert", "", "path to TLS certificate")
flTLSKey = flagset.String("tls-key", "", "path to TLS private key")
flHTTPAddr = flagset.String("http-addr", ":https", "http(s) listen address of mdm server. defaults to :8080 if tls is false")
flHTTPDebug = flagset.Bool("http-debug", false, "enable debug for http(dumps full request)")
flRepoPath = flagset.String("filerepo", "", "path to http file repo")
flDepSim = flagset.String("depsim", "", "use depsim URL")
flExamples = flagset.Bool("examples", false, "prints some example usage")
flCommandWebhookURL = flagset.String("command-webhook-url", "", "URL to send command responses.")
flHomePage = flagset.Bool("homepage", true, "hosts a simple built-in webpage at the / address")
flSCEPClientValidity = flagset.Int("scep-client-validity", 365, "sets the scep certificate validity in days")
flTLS = flagset.Bool("tls", env.Bool("MICROMDM_TLS", true), "Use https")
flTLSCert = flagset.String("tls-cert", env.String("MICROMDM_TLS_CERT", ""), "Path to TLS certificate")
flTLSKey = flagset.String("tls-key", env.String("MICROMDM_TLS_KEY", ""), "Path to TLS private key")
flHTTPAddr = flagset.String("http-addr", env.String("MICROMDM_HTTP_ADDR", ":https"), "http(s) listen address of mdm server. defaults to :8080 if tls is false")
flHTTPDebug = flagset.Bool("http-debug", env.Bool("MICROMDM_HTTP_DEBUG", false), "Enable debug for http(dumps full request)")
flRepoPath = flagset.String("filerepo", env.String("MICROMDM_FILE_REPO", ""), "Path to http file repo")
flDepSim = flagset.String("depsim", env.String("MICROMDM_DEPSIM_URL", ""), "Use depsim URL")
flExamples = flagset.Bool("examples", false, "Prints some example usage")
flCommandWebhookURL = flagset.String("command-webhook-url", env.String("MICROMDM_WEBHOOK_URL", ""), "URL to send command responses")
flHomePage = flagset.Bool("homepage", env.Bool("MICROMDM_HTTP_HOMEPAGE", true), "Hosts a simple built-in webpage at the / address")
flSCEPClientValidity = flagset.Int("scep-client-validity", env.Int("MICROMDM_SCEP_CLIENT_VALIDITY", 365), "Sets the scep certificate validity in days")
flPrintArgs = flagset.Bool("print-flags", false, "Print all flags and their values")
)
flagset.Usage = usageFor(flagset, "micromdm serve [flags]")
if err := flagset.Parse(args); err != nil {
return err
}
if *flPrintArgs {
flagset.VisitAll(func(fl *flag.Flag) {
fmt.Printf("%v: %v\n", fl.Usage, fl.Value)
})
}
if *flExamples {
printExamples()
return nil

2
go.mod
View File

@@ -22,7 +22,7 @@ require (
github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect
github.com/lib/pq v1.0.0
github.com/mattn/go-sqlite3 v1.9.0 // indirect
github.com/micromdm/go4 v0.0.0-20171021081444-deded5397014
github.com/micromdm/go4 v0.0.0-20190530145745-54e7af012bbc
github.com/micromdm/scep v1.0.1-0.20181014170139-9be65e185499
github.com/pkg/errors v0.8.0
github.com/pmezard/go-difflib v1.0.0 // indirect

5
go.sum
View File

@@ -30,6 +30,7 @@ github.com/gorilla/mux v1.6.2 h1:Pgr17XVTNXAk3q/r4CpKzC5xBM/qW1uVLV+IhRZpIIk=
github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
github.com/groob/finalizer v0.0.0-20170707115354-4c2ed49aabda h1:5ikpG9mYCMFiZX0nkxoV6aU2IpCHPdws3gCNgdZeEV0=
github.com/groob/finalizer v0.0.0-20170707115354-4c2ed49aabda/go.mod h1:MyndkAZd5rUMdNogn35MWXBX1UiBigrU8eTj8DoAC2c=
github.com/groob/pkcs7 v0.0.0-20180824154052-36585635cb64 h1:1ALD84dEnUxPKZENhUAeQ0tuJ+s3PuL85pV95B0Ekfk=
github.com/groob/pkcs7 v0.0.0-20180824154052-36585635cb64/go.mod h1:mEOMQ8C7oeXY3LnE2jy4UkLAqrW9rrpwiP5U4hVV+MY=
github.com/groob/plist v0.0.0-20180203051248-dd56909aee38 h1:afbUddvIjPRC7XHHgeSTRfzZtIxEsSl4VCxumLBGDJU=
github.com/groob/plist v0.0.0-20180203051248-dd56909aee38/go.mod h1:qg2Nek0ND/hIr+nY8H1oVqEW2cLzVVNaAQ0QexOyjyc=
@@ -52,8 +53,8 @@ github.com/lib/pq v1.0.0 h1:X5PMW56eZitiTeO7tKzZxFCSpbFZJtkMMooicw2us9A=
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/mattn/go-sqlite3 v1.9.0 h1:pDRiWfl+++eC2FEFRy6jXmQlvp4Yh3z1MJKg4UeYM/4=
github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
github.com/micromdm/go4 v0.0.0-20171021081444-deded5397014 h1:8Za9WLoGTSU96EAWFziRCiFmQuBAC6xj9/dKiN45LHw=
github.com/micromdm/go4 v0.0.0-20171021081444-deded5397014/go.mod h1:8EzTEgA3q2ZdZotWXs1bWnFCXuaFHU0+jDNZbHlwduM=
github.com/micromdm/go4 v0.0.0-20190530145745-54e7af012bbc h1:lpsBe6vFai/EZTbqK48gnuTjqzjHBcovCughxrNQO4k=
github.com/micromdm/go4 v0.0.0-20190530145745-54e7af012bbc/go.mod h1:8EzTEgA3q2ZdZotWXs1bWnFCXuaFHU0+jDNZbHlwduM=
github.com/micromdm/scep v1.0.1-0.20181014170139-9be65e185499 h1:tAPbBGVDrfo7Tv4rvmzVQPfbQTrR/XSLbl4JuGfJbPI=
github.com/micromdm/scep v1.0.1-0.20181014170139-9be65e185499/go.mod h1:a4hGfYA9e51888COzEduLGsstH9NPxJPndn/Ke5/Tw8=
github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw=