brimstone / docker-golang

Docker image for cross compiling go with CGO for linux (desktops and Raspberry Pis), Windows, MacOS, and FreeBSD

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

golang

This is a container to build golang static binaries with cgo musl for amd64, glibc for darwin, freebsd, and windows

microbadger docker hub

Usage

Check out your source files to a GOPATH compatible directory:

mkdir -p src/github.com/user
git clone https://github.com/user/repo.git src/github.com/user/repo

Then build!

docker run --rm -it -v "$PWD:/go" -u "$UID:$GID" brimstone/golang github.com/user/repo

Alternate build

For when another repo is included in a src directory, for instance, a submodule:

tar c src \
| docker run --rm -i -e TAR=1 brimstone/golang github.com/user/repo \
| tar -x ./main

For when there's just source files in a diretory:

tar c . \
| docker run --rm -i -e TAR=1 brimstone/golang -o main \
| tar -x ./main

Environment Variables

VERBOSE This makes the loader script more verbose

ONBUILD

This image supports docker multistage builds. Simply use this as template for your Dockerfile:

ARG REPOSITORY=github.com/brimstone/example
FROM brimstone/golang as builder

FROM scratch
ENV ADDRESS=
EXPOSE 80
ENTRYPOINT ["/repo", "serve"]
COPY --from=builder /app /repo

Then build with this:

docker build -t user/repo --build-arg PACKAGE=github.com/user/repo .

References

http://dominik.honnef.co/posts/2015/06/statically_compiled_go_programs__always__even_with_cgo__using_musl/

About

Docker image for cross compiling go with CGO for linux (desktops and Raspberry Pis), Windows, MacOS, and FreeBSD


Languages

Language:Shell 48.9%Language:Dockerfile 35.4%Language:Roff 13.0%Language:Makefile 1.5%Language:Go 1.2%