diff --git a/Dockerfile b/Dockerfile index ad73f1e..40ec0ec 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,20 +1,7 @@ ARG REPO=library -# FROM golang:1.11-alpine AS builder -# -# RUN apk add --no-cache git -# RUN go get -u github.com/golang/dep/cmd/dep -# -# WORKDIR /go/src/app/ -# COPY ./Gopkg.* /go/src/app/ -# RUN dep ensure --vendor-only -# -# COPY ./main.go /go/src/app/ -# -# RUN CGO_ENABLED=0 GOOS=linux GOARCH=${ARCH} go build -a -installsuffix nocgo -o dockron . - FROM ${REPO}/busybox:latest WORKDIR /root/ -# COPY --from=builder /go/src/app/dockron . + ARG ARCH=amd64 COPY ./dockron-linux-${ARCH} ./dockron diff --git a/Dockerfile.multi-stage b/Dockerfile.multi-stage new file mode 100644 index 0000000..744e159 --- /dev/null +++ b/Dockerfile.multi-stage @@ -0,0 +1,16 @@ +ARG REPO=library +FROM ${REPO}/golang:1.11-alpine AS builder + +COPY ./go.mod ./go.sum /go/src/app/ + +RUN go mod download + +COPY ./main.go /go/src/app/ + +RUN CGO_ENABLED=0 GOOS=linux GOARCH=${ARCH} go build -a -installsuffix nocgo -o dockron . + +FROM ${REPO}/busybox:latest +WORKDIR /root/ +COPY --from=builder /go/src/app/dockron . + +CMD [ "./dockron" ] diff --git a/Makefile b/Makefile index 5c9bd9e..67560a4 100644 --- a/Makefile +++ b/Makefile @@ -5,28 +5,28 @@ default: build # Downloads dependencies into vendor directory vendor: - dep ensure + go mod vendor # Runs the application, useful while developing .PHONY: run -run: vendor +run: go run *.go # Output target -dockron: vendor +dockron: go build -o dockron # Alias for building .PHONY: build build: dockron -dockron-linux-amd64: vendor +dockron-linux-amd64: GOARCH=amd64 CGO_ENABLED=0 GOOS=linux go build -a -installsuffix nocgo -o dockron-linux-amd64 -dockron-linux-arm: vendor +dockron-linux-arm: GOARCH=arm CGO_ENABLED=0 GOOS=linux go build -a -installsuffix nocgo -o dockron-linux-arm -dockron-linux-arm64: vendor +dockron-linux-arm64: GOARCH=arm64 CGO_ENABLED=0 GOOS=linux go build -a -installsuffix nocgo -o dockron-linux-arm64 .PHONY: build-all-static @@ -36,17 +36,13 @@ build-all-static: dockron-linux-amd64 dockron-linux-arm dockron-linux-arm64 .PHONY: clean clean: rm dockron + rm dockron-linux-* # Cleans vendor directory .PHONY: clean-vendor clean-vendor: rm -fr ./vendor -# Attempts to update dependencies -.PHONY: dep-update -dep-update: - dep ensure -update - .PHONY: docker-build docker-build: docker build . -t ${DOCKER_TAG}-linux-amd64 diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..683d2ef --- /dev/null +++ b/go.mod @@ -0,0 +1,15 @@ +module github.com/iamthefij/dockron + +go 1.12 + +require ( + github.com/Microsoft/go-winio v0.4.9 // indirect + github.com/docker/distribution v2.6.2+incompatible // indirect + github.com/docker/docker v1.13.1 + github.com/docker/go-connections v0.4.0 // indirect + github.com/docker/go-units v0.3.3 // indirect + github.com/pkg/errors v0.8.0 // indirect + github.com/robfig/cron v1.1.0 + golang.org/x/net v0.0.0-20180801234040-f4c29de78a2a + golang.org/x/sys v0.0.0-20180802203216-0ffbfd41fbef // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..2e8562b --- /dev/null +++ b/go.sum @@ -0,0 +1,18 @@ +github.com/Microsoft/go-winio v0.4.9 h1:3RbgqgGVqmcpbOiwrjbVtDHLlJBGF6aE+yHmNtBNsFQ= +github.com/Microsoft/go-winio v0.4.9/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= +github.com/docker/distribution v2.6.2+incompatible h1:4FI6af79dfCS/CYb+RRtkSHw3q1L/bnDjG1PcPZtQhM= +github.com/docker/distribution v2.6.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= +github.com/docker/docker v1.13.1 h1:IkZjBSIc8hBjLpqeAbeE5mca5mNgeatLHBy3GO78BWo= +github.com/docker/docker v1.13.1/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= +github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= +github.com/docker/go-units v0.3.3 h1:Xk8S3Xj5sLGlG5g67hJmYMmUgXv5N4PhkjJHHqrwnTk= +github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/pkg/errors v0.8.0 h1:WdK/asTD0HN+q6hsWO3/vpuAkAr+tw6aNJNDFFf0+qw= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/robfig/cron v1.1.0 h1:jk4/Hud3TTdcrJgUOBgsqrZBarcxl6ADIjSC2iniwLY= +github.com/robfig/cron v1.1.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k= +golang.org/x/net v0.0.0-20180801234040-f4c29de78a2a h1:8fCF9zjAir2SP3N+axz9xs+0r4V8dqPzqsWO10t8zoo= +golang.org/x/net v0.0.0-20180801234040-f4c29de78a2a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/sys v0.0.0-20180802203216-0ffbfd41fbef h1:ESfhYoBNk2UQGmavscFPKfwmc4ZTB2+UdQYsVw6Bq9M= +golang.org/x/sys v0.0.0-20180802203216-0ffbfd41fbef/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=