Go (golang) is a general purpose, higher-level, imperative programming language.
4.4K
The armhf organization is deprecated in favor of the more-specific arm32v7 and arm32v6 organizations, as per https://github.com/docker-library/official-images#architectures-other-than-amd64. Please adjust your usages accordingly.
Dockerfile links** THESE IMAGES ARE VERY EXPERIMENTAL; THEY ARE PROVIDED ON A BEST-EFFORT BASIS WHILE docker-library/official-images#2289 IS STILL IN-PROGRESS (which is the first step towards proper multiarch images) **
** PLEASE DO NOT USE THEM FOR IMPORTANT THINGS **
This image is built from the source of the official image of the same name (golang). Please see that image's description for links to the relevant Dockerfiles.
If you are curious about specifically how this image differs, see the Jenkins Groovy DSL scripts in the tianon/jenkins-groovy GitHub repository, which are responsible for creating the Jenkins jobs which build them.
Where to get help:
the Docker Community Forums, the Docker Community Slack, or Stack Overflow
Where to file issues:
https://github.com/docker-library/golang/issues
Maintained by:
the Docker Community
Published image artifact details:
repo-info repo's repos/golang/ directory (history)
(image metadata, transfer size, etc)
Image updates:
official-images PRs with label library/golang
official-images repo's library/golang file (history)
Source of this description:
docs repo's golang/ directory (history)
Supported Docker versions:
the latest release (down to 1.6 on a best-effort basis)
Go (a.k.a., Golang) is a programming language first developed at Google. It is a statically-typed language with syntax loosely derived from C, but with additional features such as garbage collection, type safety, some dynamic-typing capabilities, additional built-in types (e.g., variable-length arrays and key-value maps), and a large standard library.

The most straightforward way to use this image is to use a Go container as both the build and runtime environment. In your Dockerfile, writing something along the lines of the following will compile and run your project:
FROM golang:1.8
WORKDIR /go/src/app
COPY . .
RUN go-wrapper download # "go get -d -v ./..."
RUN go-wrapper install # "go install -v ./..."
CMD ["go-wrapper", "run"] # ["app"]
You can then build and run the Docker image:
$ docker build -t my-golang-app .
$ docker run -it --rm --name my-running-app my-golang-app
Note: go-wrapper run includes set -x so the binary name is printed to stderr on application startup. If this behavior is undesirable, then switching to CMD ["app"] (or CMD ["myapp"] if a Go custom import path is in use) will silence it by running the built binary directly.
There may be occasions where it is not appropriate to run your app inside a container. To compile, but not run your app inside the Docker instance, you can write something like:
$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.8 go build -v
This will add your current directory as a volume to the container, set the working directory to the volume, and run the command go build which will tell go to compile the project in the working directory and output the executable to myapp. Alternatively, if you have a Makefile, you can run the make command inside your container.
$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.8 make
If you need to compile your application for a platform other than linux/amd64 (such as windows/386):
$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp -e GOOS=windows -e GOARCH=386 golang:1.8 go build -v
Alternatively, you can build for multiple platforms at once:
$ docker run --rm -it -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.8 bash
$ for GOOS in darwin linux; do
> for GOARCH in 386 amd64; do
> go build -v -o myapp-$GOOS-$GOARCH
> done
> done
View license information for the software contained in this image.
No tags have been pushed to this repository yet.