mirror of
				https://github.com/juanfont/headscale.git
				synced 2025-10-31 08:01:34 +01:00 
			
		
		
		
	Merge pull request #680 from ohdearaugustin/topic/speedup-build
Topic/speedup build
This commit is contained in:
		
						commit
						f9c4d577e2
					
				| @ -1,5 +1,5 @@ | |||||||
| # Builder image | # Builder image | ||||||
| FROM docker.io/golang:1.18.0-bullseye AS build | FROM --platform=$BUILDPLATFORM docker.io/golang:1.18.0-bullseye AS build | ||||||
| ARG VERSION=dev | ARG VERSION=dev | ||||||
| ENV GOPATH /go | ENV GOPATH /go | ||||||
| WORKDIR /go/src/headscale | WORKDIR /go/src/headscale | ||||||
| @ -8,9 +8,8 @@ COPY go.mod go.sum /go/src/headscale/ | |||||||
| RUN go mod download | RUN go mod download | ||||||
| 
 | 
 | ||||||
| COPY . . | COPY . . | ||||||
| 
 | ARG TARGETOS TARGETARCH | ||||||
| RUN CGO_ENABLED=0 GOOS=linux go install -ldflags="-s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=$VERSION" -a ./cmd/headscale | RUN CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -o /go/bin/headscale -ldflags="-s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=$VERSION" -a ./cmd/headscale  | ||||||
| RUN strip /go/bin/headscale |  | ||||||
| RUN test -e /go/bin/headscale | RUN test -e /go/bin/headscale | ||||||
| 
 | 
 | ||||||
| # Production image | # Production image | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| # Builder image | # Builder image | ||||||
| FROM docker.io/golang:1.18.0-alpine AS build | FROM --platform=$BUILDPLATFORM docker.io/golang:1.18.0-alpine AS build | ||||||
| ARG VERSION=dev | ARG VERSION=dev | ||||||
| ENV GOPATH /go | ENV GOPATH /go | ||||||
| WORKDIR /go/src/headscale | WORKDIR /go/src/headscale | ||||||
| @ -10,8 +10,8 @@ RUN go mod download | |||||||
| 
 | 
 | ||||||
| COPY . . | COPY . . | ||||||
| 
 | 
 | ||||||
| RUN CGO_ENABLED=0 GOOS=linux go install -ldflags="-s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=$VERSION" -a ./cmd/headscale | ARG TARGETOS TARGETARCH | ||||||
| RUN strip /go/bin/headscale | RUN CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -o /go/bin/headscale -ldflags="-s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=$VERSION" -a ./cmd/headscale  | ||||||
| RUN test -e /go/bin/headscale | RUN test -e /go/bin/headscale | ||||||
| 
 | 
 | ||||||
| # Production image | # Production image | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| # Builder image | # Builder image | ||||||
| FROM docker.io/golang:1.18.0-bullseye AS build | FROM --platform=$BUILDPLATFORM docker.io/golang:1.18.0-bullseye AS build | ||||||
| ARG VERSION=dev | ARG VERSION=dev | ||||||
| ENV GOPATH /go | ENV GOPATH /go | ||||||
| WORKDIR /go/src/headscale | WORKDIR /go/src/headscale | ||||||
| @ -9,6 +9,7 @@ RUN go mod download | |||||||
| 
 | 
 | ||||||
| COPY . . | COPY . . | ||||||
| 
 | 
 | ||||||
|  | ARG TARGETOS TARGETARCH | ||||||
| RUN CGO_ENABLED=0 GOOS=linux go install -ldflags="-s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=$VERSION" -a ./cmd/headscale | RUN CGO_ENABLED=0 GOOS=linux go install -ldflags="-s -w -X github.com/juanfont/headscale/cmd/headscale/cli.Version=$VERSION" -a ./cmd/headscale | ||||||
| RUN test -e /go/bin/headscale | RUN test -e /go/bin/headscale | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										32
									
								
								docs/build-headscale-container.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								docs/build-headscale-container.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,32 @@ | |||||||
|  | # Build docker from scratch | ||||||
|  | 
 | ||||||
|  | The Dockerfiles included in the repository are using the [buildx plugin](https://docs.docker.com/buildx/working-with-buildx/). This plugin is includes in docker newer than Docker-ce CLI 19.03.2. The plugin is used to be able to build different container arches. Building the Dockerfiles without buildx is not possible. | ||||||
|  | 
 | ||||||
|  | # Build native | ||||||
|  | 
 | ||||||
|  | To build the container on the native arch you can just use: | ||||||
|  | ``` | ||||||
|  | $ sudo docker buildx build -t headscale:custom-arch . | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | For example: This will build a amd64(x86_64) container if your hostsystem is amd64(x86_64). Or a arm64 container on a arm64 hostsystem (raspberry pi4). | ||||||
|  | 
 | ||||||
|  | # Build cross platform | ||||||
|  | 
 | ||||||
|  | To build a arm64 container on a amd64 hostsystem you could use: | ||||||
|  | ``` | ||||||
|  | $ sudo docker buildx build --platform linux/arm64 -t headscale:custom-arm64 . | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | **Import: Currently arm32 build are not supported as there is a problem with a library used by headscale. Hopefully this will be fixed soon.** | ||||||
|  | 
 | ||||||
|  | # Build multiple arches | ||||||
|  | 
 | ||||||
|  | To build multiple archres you could use: | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
|  | $ sudo docker buildx create --use | ||||||
|  | $ sudo docker buildx build --platform linux/amd64,linux/arm64 . | ||||||
|  | 
 | ||||||
|  | ``` | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user