Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 13 additions & 9 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
FROM gliderlabs/logspout:latest AS builder
FROM --platform=${BUILDPLATFORM:-linux/amd64} gliderlabs/logspout:latest AS builder

RUN apk add --no-cache --update go build-base git mercurial ca-certificates
RUN mkdir -p /go/src/github.com/gliderlabs && \
cp -r /src /go/src/github.com/gliderlabs/logspout
WORKDIR /go/src/github.com/gliderlabs/logspout
ARG ARCH=amd64
ARG OS=linux
ENV GOARCH=${ARCH}
ENV GOOS=${OS}
ENV GOPATH=/go
ENV CGO_ENABLED=0
RUN go get
RUN go build -ldflags "-X main.Version=$(cat VERSION)-logdna" -o /bin/logspout

ARG TARGETPLATFORM
ARG BUILDPLATFORM
ARG TARGETOS
ARG TARGETARCH

RUN go get
RUN CGO_ENABLED=0 \
GOOS=${TARGETOS} \
GOARCH=${TARGETARCH} \
go build \
-ldflags="-w -s -X main.Version=$(cat VERSION)-logdna" -o /bin/logspout

FROM scratch
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
Expand Down
39 changes: 16 additions & 23 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -2,31 +2,24 @@ TAG = $(if $(CIRCLE_TAG),$(CIRCLE_TAG),PRTEST)
REPO = ${USERNAME}
NAME = logspout
IMAGE = $(REPO)/$(NAME)
IMAGE_AMD64 = $(IMAGE):$(TAG)-amd64
IMAGE_ARM64 = $(IMAGE):$(TAG)-arm64

# Enable 'docker manifest' commands (still experimental in Docker v20.10.5)
export DOCKER_CLI_EXPERIMENTAL = enabled
.DEFAULT_GOAL := default

export DOCKER_CLI_EXPERIMENTAL=enabled

.PHONY: build # Build the container image
build:
docker build --pull -t $(IMAGE_AMD64) \
--build-arg ARCH=amd64 \
--build-arg OS=linux \
-f Dockerfile .
docker build --pull -t $(IMAGE_ARM64) \
--build-arg ARCH=arm64 \
--build-arg OS=linux \
-f Dockerfile .
docker save -o image.tar $(IMAGE_AMD64) $(IMAGE_ARM64)
@docker buildx create --use --name=crossplat --node=crossplat && \
docker buildx build \
--output "type=docker,push=false" \
--tag $(IMAGE) \
.

.PHONY: publish # Push the image to the remote registry
publish:
docker login --username ${USERNAME} --password ${PASSWORD}
docker load -i ./image.tar
docker push $(IMAGE_AMD64)
docker push $(IMAGE_ARM64)
docker manifest create $(IMAGE):$(TAG) $(IMAGE_AMD64) $(IMAGE_ARM64)
docker manifest annotate $(IMAGE):$(TAG) $(IMAGE_ARM64) --arch arm64 --os linux
docker manifest push --purge $(IMAGE):$(TAG)
docker manifest create $(IMAGE):latest $(IMAGE_AMD64) $(IMAGE_ARM64)
docker manifest annotate $(IMAGE):latest $(IMAGE_ARM64) --arch arm64 --os linux
docker manifest push --purge $(IMAGE):latest
@docker buildx create --use --name=crossplat --node=crossplat && \
docker buildx build \
--platform linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x \
--output "type=image,push=true" \
--tag $(IMAGE) \
.