diff --git a/Dockerfile b/Dockerfile index 140889f52..078921c4d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -48,6 +48,9 @@ RUN go mod download COPY . . +ARG goflags_arg # default intentionally unset +ENV GOFLAGS=$goflags_arg + RUN go install -v ./cmd/... FROM alpine:3.11 diff --git a/build_docker.sh b/build_docker.sh new file mode 100755 index 000000000..29dd99f46 --- /dev/null +++ b/build_docker.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env sh + +# +# Runs `go build` with flags configured for docker distribution. All +# it does differently from `go build` is burn git commit and version +# information into the binaries inside docker, so that we can track down user +# issues. +# +############################################################################ +# +# WARNING: Tailscale is not yet officially supported in Docker, +# Kubernetes, etc. +# +# It might work, but we don't regularly test it, and it's not as polished as +# our currently supported platforms. This is provided for people who know +# how Tailscale works and what they're doing. +# +# Our tracking bug for officially support container use cases is: +# https://github.com/tailscale/tailscale/issues/504 +# +# Also, see the various bugs tagged "containers": +# https://github.com/tailscale/tailscale/labels/containers +# +############################################################################ + +set -eu + +eval $(./version/version.sh) + +GOFLAGS='-tags xversion -ldflags '"-X tailscale.com/version.Long=${VERSION_LONG} -X tailscale.com/version.Short=${VERSION_SHORT} -X tailscale.com/version.GitCommit=${VERSION_GIT_HASH}" +docker build --build-arg goflags_arg="'""${GOFLAGS}""'" -t tailscale:tailscale .