From 9dfc40da1929e150b66fe0c86de546603da1c254 Mon Sep 17 00:00:00 2001 From: Timothy Date: Mon, 9 Mar 2020 14:17:47 +0800 Subject: [PATCH] use docker buildx to build docker images --- Dockerfile | 14 ++++++++++++++ cmd/godns/Makefile => Makefile | 20 +++++++++----------- cmd/godns/Dockerfile | 9 --------- 3 files changed, 23 insertions(+), 20 deletions(-) create mode 100644 Dockerfile rename cmd/godns/Makefile => Makefile (53%) delete mode 100644 cmd/godns/Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..6c06bb8 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM golang:alpine AS builder +RUN mkdir /godns +ADD . /godns/ +WORKDIR /godns +RUN go build -o godns cmd/godns/godns.go + +FROM alpine +RUN apk add --update ca-certificates +RUN mkdir /usr/local/godns +COPY --from=builder /godns/godns /usr/local/godns +RUN chmod +x /usr/local/godns/godns +RUN rm -rf /var/cache/apk/* +WORKDIR /usr/local/godns +ENTRYPOINT ["./godns", "-c", "/usr/local/godns/config.json"] diff --git a/cmd/godns/Makefile b/Makefile similarity index 53% rename from cmd/godns/Makefile rename to Makefile index 47b4801..841d846 100644 --- a/cmd/godns/Makefile +++ b/Makefile @@ -2,39 +2,37 @@ BINARY=godns # Builds the project build: - GO111MODULE=on go build -o ${BINARY} -ldflags "-X main.Version=${VERSION}" + GO111MODULE=on go build cmd/godns/godns.go -o ${BINARY} -ldflags "-X main.Version=${VERSION}" # Installs our project: copies binaries install: GO111MODULE=on go install image: # Build docker image go clean - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on go build -o ${BINARY} -ldflags "-s -w -X main.Version=${VERSION}" - docker build -t timothyye/godns:${VERSION} . - docker tag timothyye/godns:${VERSION} timothyye/godns:latest - docker push timothyye/godns:${VERSION} - docker push timothyye/godns:latest + rm -rf *.gz + docker buildx build --platform linux/amd64,linux/386,linux/arm64,linux/arm/v7 -t timothyye/godns:${VERSION} . --push + docker buildx build --platform linux/amd64,linux/386,linux/arm64,linux/arm/v7 -t timothyye/godns:latest . --push release: # Clean go clean rm -rf *.gz # Build for mac - GO111MODULE=on go build -o ${BINARY} -ldflags "-s -w -X main.Version=${VERSION}" + GO111MODULE=on go build cmd/godns/godns.go -o ${BINARY} -ldflags "-s -w -X main.Version=${VERSION}" tar czvf ${BINARY}-mac64-${VERSION}.tar.gz ./${BINARY} # Build for linux go clean - CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on go build -o ${BINARY} -ldflags "-s -w -X main.Version=${VERSION}" + CGO_ENABLED=0 GOOS=linux GOARCH=amd64 GO111MODULE=on go build cmd/godns/godns.go -o ${BINARY} -ldflags "-s -w -X main.Version=${VERSION}" tar czvf ${BINARY}-linux64-${VERSION}.tar.gz ./${BINARY} # Build for arm go clean - CGO_ENABLED=0 GOOS=linux GOARCH=arm64 GO111MODULE=on go build -o ${BINARY} -ldflags "-s -w -X main.Version=${VERSION}" + CGO_ENABLED=0 GOOS=linux GOARCH=arm64 GO111MODULE=on go build cmd/godns/godns.go -o ${BINARY} -ldflags "-s -w -X main.Version=${VERSION}" tar czvf ${BINARY}-arm64-${VERSION}.tar.gz ./${BINARY} go clean - CGO_ENABLED=0 GOOS=linux GOARCH=arm GO111MODULE=on go build -o ${BINARY} -ldflags "-s -w -X main.Version=${VERSION}" + CGO_ENABLED=0 GOOS=linux GOARCH=arm GO111MODULE=on go build cmd/godns/godns.go -o ${BINARY} -ldflags "-s -w -X main.Version=${VERSION}" tar czvf ${BINARY}-arm-${VERSION}.tar.gz ./${BINARY} # Build for win go clean - CGO_ENABLED=0 GOOS=windows GOARCH=amd64 GO111MODULE=on go build -o ${BINARY}.exe -ldflags "-s -w -X main.Version=${VERSION}" + CGO_ENABLED=0 GOOS=windows GOARCH=amd64 GO111MODULE=on go build cmd/godns/godns.go -o ${BINARY}.exe -ldflags "-s -w -X main.Version=${VERSION}" tar czvf ${BINARY}-win64-${VERSION}.tar.gz ./${BINARY}.exe make image # Cleans our projects: deletes binaries diff --git a/cmd/godns/Dockerfile b/cmd/godns/Dockerfile deleted file mode 100644 index 5fe2664..0000000 --- a/cmd/godns/Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM timothyye/alpine:3.6-glibc -MAINTAINER Timothy -RUN apk add --update ca-certificates -RUN mkdir -p /usr/local/godns -COPY godns /usr/local/godns -RUN chmod +x /usr/local/godns/godns -RUN rm -rf /var/cache/apk/* -WORKDIR /usr/local/godns -ENTRYPOINT ["./godns", "-c", "/usr/local/godns/config.json"]