mirror of
https://github.com/micromdm/micromdm/
synced 2026-08-06 17:53:14 +08:00
Add multi-stage docker build (#587)
This commit is contained in:
committed by
Victor Vrantchan
parent
438fdfa990
commit
577e4c9538
19
Dockerfile
19
Dockerfile
@@ -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"]
|
||||
|
||||
6
Makefile
6
Makefile
@@ -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
|
||||
|
||||
@@ -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
2
go.mod
@@ -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
5
go.sum
@@ -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=
|
||||
|
||||
Reference in New Issue
Block a user