@ -1,49 +1,59 @@
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# syntax=docker/dockerfile:1 .3 
 
					 
					 
					 
					# syntax=docker/dockerfile:1 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					ARG  GO_VERSION = 1 .16.15
 
					 
					 
					 
					ARG  GO_VERSION = 1 .19.9
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					ARG  GORELEASER_XX_VERSION = 1 .2.5
 
					 
					 
					 
					ARG  ALPINE_VERSION = 3 .16
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					ARG  XX_VERSION = 1 .2.1
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					FROM  --platform=$BUILDPLATFORM crazymax/goreleaser-xx:${GORELEASER_XX_VERSION} AS goreleaser-xx 
 
					 
					 
					 
					FROM  --platform=$BUILDPLATFORM tonistiigi/xx:${XX_VERSION} AS xx 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					FROM  --platform=$BUILDPLATFORM golang:${GO_VERSION}-alpine AS base 
 
					 
					 
					 
					FROM  --platform=$BUILDPLATFORM golang:${GO_VERSION}-alpine${ALPINE_VERSION} AS base 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					COPY  --from= goreleaser-xx / /
 
					 
					 
					 
					COPY  --from= xx / /
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					RUN  apk add --no-cache file git
 
					 
					 
					 
					RUN  apk add --no-cache bash coreutils file git
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					ENV  GO111MODULE = auto
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					ENV  CGO_ENABLED = 0 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					WORKDIR  /go/src/github.com/docker/distribution 
 
					 
					 
					 
					WORKDIR  /go/src/github.com/docker/distribution 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					FROM  base AS version 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					ARG  PKG = "github.com/docker/distribution" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					RUN  --mount= target = . \ 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					  VERSION = $( git describe --match 'v[0-9]*'  --dirty= '.m'  --always --tags)  REVISION = $( git rev-parse HEAD) $( if  ! git diff --no-ext-diff --quiet --exit-code;  then  echo  .m;  fi ) ;  \ 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					  echo  " -X  ${ PKG } /version.Version= ${ VERSION #v }  -X  ${ PKG } /version.Revision= ${ REVISION }  -X  ${ PKG } /version.Package= ${ PKG } "  |  tee /tmp/.ldflags;  \ 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					  echo  -n " ${ VERSION } "  |  tee /tmp/.version; 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					FROM  base AS build 
 
					 
					 
					 
					FROM  base AS build 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					ENV  GO111MODULE = auto
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					ENV  CGO_ENABLED = 0 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# GIT_REF is used by goreleaser-xx to handle the proper git ref when available. 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# It will fallback to the working tree info if empty and use "git tag --points-at" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					# or "git describe" to define the version info. 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					ARG  GIT_REF
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					ARG  TARGETPLATFORM
 
					 
					 
					 
					ARG  TARGETPLATFORM
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					ARG  PKG= "github.com/distribution/distribution  "
 
					 
					 
					 
					ARG  LDFLAGS = "-s -w" 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					ARG  BUILDTAGS = "include_oss include_gcs" 
 
					 
					 
					 
					ARG  BUILDTAGS = "include_oss include_gcs" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					RUN  --mount= type = bind,rw \ 
 
					 
					 
					 
					RUN  --mount= type = bind,target= /go/src/github.com/docker/distribution,rw \ 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					    --mount= type = cache,target= /root/.cache/go-build \ 
 
					 
					 
					 
					    --mount= type = cache,target= /root/.cache/go-build \ 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    --mount= target = /go/pkg/mod,type= cache \ 
 
					 
					 
					 
					    --mount= target = /go/pkg/mod,type= cache \ 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					  goreleaser-xx --debug \ 
 
					 
					 
					 
					    --mount= type = bind,source= /tmp/.ldflags,target= /tmp/.ldflags,from= version \ 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    --name= "registry"  \ 
 
					 
					 
					 
					      set  -x ;  xx-go build -trimpath -ldflags " $( cat /tmp/.ldflags)   ${ LDFLAGS } "  -o /usr/bin/registry ./cmd/registry \ 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    --dist= "/out"  \ 
 
					 
					 
					 
					      &&  xx-verify --static /usr/bin/registry
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
					    --main= "./cmd/registry"  \ 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    --flags= "-v"  \ 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    --ldflags= " -s -w -X ' $PKG /version.Version={{.Version}}' -X ' $PKG /version.Revision={{.Commit}}' -X ' $PKG /version.Package= $PKG ' "  \ 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    --tags= " $BUILDTAGS "  \ 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    --files= "LICENSE"  \ 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					    --files= "README.md" 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					FROM  scratch AS artifact 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					COPY  --from= build /out/*.tar.gz /
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					COPY  --from= build /out/*.zip /
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					COPY  --from= build /out/*.sha256 /
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					FROM  scratch AS binary 
 
					 
					 
					 
					FROM  scratch AS binary 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					COPY  --from= build /usr/local/bin/registry* /
 
					 
					 
					 
					COPY  --from= build /usr/bin/registry /
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					FROM  base AS releaser 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					ARG  TARGETOS
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					ARG  TARGETARCH
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					ARG  TARGETVARIANT
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					WORKDIR  /work 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					RUN  --mount= from = binary,target= /build \ 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    --mount= type = bind,target= /src \ 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					    --mount= type = bind,source= /tmp/.version,target= /tmp/.version,from= version \ 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					      VERSION = $( cat /tmp/.version)  \ 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					      &&  mkdir -p /out \ 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					      &&  cp /build/registry /src/README.md /src/LICENSE . \ 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					      &&  tar -czvf " /out/registry_ ${ VERSION #v } _ ${ TARGETOS } _ ${ TARGETARCH } ${ TARGETVARIANT } .tar.gz "  * \ 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					      &&  sha256sum -z " /out/registry_ ${ VERSION #v } _ ${ TARGETOS } _ ${ TARGETARCH } ${ TARGETVARIANT } .tar.gz "  |  awk '{ print $1 }'  > " /out/registry_ ${ VERSION #v } _ ${ TARGETOS } _ ${ TARGETARCH } ${ TARGETVARIANT } .tar.gz.sha256 " 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					FROM  scratch AS artifact 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
					COPY  --from= releaser /out /
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					FROM  alpine:3.14 
 
					 
					 
					 
					FROM  alpine: ${ALPINE_VERSION} 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					RUN  apk add --no-cache ca-certificates
 
					 
					 
					 
					RUN  apk add --no-cache ca-certificates
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					COPY  cmd/registry/config-dev.yml /etc/docker/registry/config.yml
 
					 
					 
					 
					COPY  cmd/registry/config-dev.yml /etc/docker/registry/config.yml
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					COPY  --from= build /usr/local/bin/registry /bin/registry
 
					 
					 
					 
					COPY  --from= binary  /registry /bin/registry
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					VOLUME  [ "/var/lib/registry" ] 
 
					 
					 
					 
					VOLUME  [ "/var/lib/registry" ] 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					EXPOSE  5000 
 
					 
					 
					 
					EXPOSE  5000 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					ENTRYPOINT  [ "registry" ] 
 
					 
					 
					 
					ENTRYPOINT  [ "registry" ]