Skip to content

Docker container to build golang static binaries with musl instead of glibc

Notifications You must be signed in to change notification settings

brimstone/docker-golang-musl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

golang-musl

This is a container to build golang static binaries with musl instead of glibc.

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-musl 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-musl 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-musl -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:

FROM brimstone/golang-musl 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 container to build golang static binaries with musl instead of glibc

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages