Add docker alpine image
This commit is contained in:
parent
26623d794b
commit
1b6bad0b63
2 changed files with 86 additions and 0 deletions
64
.github/workflows/release.yml
vendored
64
.github/workflows/release.yml
vendored
|
@ -157,3 +157,67 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
rm -rf /tmp/.buildx-cache-debug
|
rm -rf /tmp/.buildx-cache-debug
|
||||||
mv /tmp/.buildx-cache-debug-new /tmp/.buildx-cache-debug
|
mv /tmp/.buildx-cache-debug-new /tmp/.buildx-cache-debug
|
||||||
|
|
||||||
|
docker-alpine-release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- name: Set up Docker Buildx
|
||||||
|
uses: docker/setup-buildx-action@v1
|
||||||
|
- name: Set up QEMU for multiple platforms
|
||||||
|
uses: docker/setup-qemu-action@master
|
||||||
|
with:
|
||||||
|
platforms: arm64,amd64
|
||||||
|
- name: Cache Docker layers
|
||||||
|
uses: actions/cache@v2
|
||||||
|
with:
|
||||||
|
path: /tmp/.buildx-cache-alpine
|
||||||
|
key: ${{ runner.os }}-buildx-alpine-${{ github.sha }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-buildx-alpine-
|
||||||
|
- name: Docker meta
|
||||||
|
id: meta-alpine
|
||||||
|
uses: docker/metadata-action@v3
|
||||||
|
with:
|
||||||
|
# list of Docker images to use as base name for tags
|
||||||
|
images: |
|
||||||
|
${{ secrets.DOCKERHUB_USERNAME }}/headscale
|
||||||
|
ghcr.io/${{ github.repository_owner }}/headscale
|
||||||
|
flavor: |
|
||||||
|
latest=false
|
||||||
|
tags: |
|
||||||
|
type=semver,pattern={{version}}-alpine
|
||||||
|
type=semver,pattern={{major}}.{{minor}}-alpine
|
||||||
|
type=semver,pattern={{major}}-alpine
|
||||||
|
type=raw,value=latest-alpine
|
||||||
|
type=sha,suffix=-alpine
|
||||||
|
- name: Login to DockerHub
|
||||||
|
uses: docker/login-action@v1
|
||||||
|
with:
|
||||||
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
|
- name: Login to GHCR
|
||||||
|
uses: docker/login-action@v1
|
||||||
|
with:
|
||||||
|
registry: ghcr.io
|
||||||
|
username: ${{ github.repository_owner }}
|
||||||
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
- name: Build and push
|
||||||
|
id: docker_build
|
||||||
|
uses: docker/build-push-action@v2
|
||||||
|
with:
|
||||||
|
push: true
|
||||||
|
context: .
|
||||||
|
file: Dockerfile.alpine
|
||||||
|
tags: ${{ steps.meta-alpine.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta-alpine.outputs.labels }}
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
cache-from: type=local,src=/tmp/.buildx-cache-alpine
|
||||||
|
cache-to: type=local,dest=/tmp/.buildx-cache-alpine-new
|
||||||
|
- name: Prepare cache for next build
|
||||||
|
run: |
|
||||||
|
rm -rf /tmp/.buildx-cache-alpine
|
||||||
|
mv /tmp/.buildx-cache-alpine-new /tmp/.buildx-cache-alpine
|
||||||
|
|
22
Dockerfile.alpine
Normal file
22
Dockerfile.alpine
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
# Builder image
|
||||||
|
FROM golang:1.17.1-alpine AS build
|
||||||
|
ENV GOPATH /go
|
||||||
|
WORKDIR /go/src/headscale
|
||||||
|
|
||||||
|
COPY go.mod go.sum /go/src/headscale/
|
||||||
|
RUN apk add gcc musl-dev
|
||||||
|
RUN go mod download
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
RUN go install -a -ldflags="-extldflags=-static" -tags netgo,sqlite_omit_load_extension ./cmd/headscale
|
||||||
|
RUN test -e /go/bin/headscale
|
||||||
|
|
||||||
|
# Production image
|
||||||
|
FROM alpine:latest
|
||||||
|
|
||||||
|
COPY --from=build /go/bin/headscale /bin/headscale
|
||||||
|
ENV TZ UTC
|
||||||
|
|
||||||
|
EXPOSE 8080/tcp
|
||||||
|
CMD ["headscale"]
|
Loading…
Reference in a new issue