Dockerfile 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. FROM debian:squeeze
  2. MAINTAINER Jakob Borg <[email protected]>
  3. ENV GOLANG_VERSION 1.4.1
  4. # SCMs for "go get", gcc for cgo
  5. RUN apt-get update && apt-get install -y \
  6. ca-certificates curl gcc libc6-dev make \
  7. bzr git mercurial unzip patch \
  8. --no-install-recommends \
  9. && apt-get clean \
  10. && rm -rf /var/lib/apt/lists/*
  11. # Get the binary dist of Go to be able to bootstrap gonative.
  12. RUN curl -sSL https://golang.org/dl/go${GOLANG_VERSION}.linux-amd64.tar.gz \
  13. | tar -v -C /usr/local -xz
  14. ENV PATH /usr/local/go/bin:$PATH
  15. ENV GOPATH /go
  16. ENV GO386 387
  17. ENV GOARM 5
  18. ENV PATH /go/bin:$PATH
  19. RUN mkdir /go
  20. WORKDIR /go
  21. # Use gonative to install native Go for most arch/OS combos
  22. RUN go get github.com/calmh/gonative \
  23. && cd /usr/local \
  24. && rm -rf go \
  25. && gonative -version $GOLANG_VERSION
  26. # Rebuild the special and missing versions, using patches as appropriate
  27. # RUN mkdir /tmp/patches
  28. # ADD *.patch /tmp/patches/
  29. # RUN bash -xec '\
  30. # cd /usr/local/go ; \
  31. # for patch in /tmp/patches/*.patch ; do \
  32. # patch -p0 < "$patch" ; \
  33. # done \
  34. # '
  35. RUN bash -xec '\
  36. cd /usr/local/go/src; \
  37. for platform in linux/386 freebsd/386 windows/386 linux/arm openbsd/amd64 openbsd/386; do \
  38. GOOS=${platform%/*} \
  39. GOARCH=${platform##*/} \
  40. CGO_ENABLED=0 \
  41. ./make.bash --no-clean 2>&1; \
  42. done \
  43. && ./make.bash --no-clean \
  44. '
  45. # Install packages needed for test coverage
  46. RUN go get github.com/tools/godep \
  47. && go get golang.org/x/tools/cmd/cover \
  48. && go get github.com/axw/gocov/gocov \
  49. && go get github.com/AlekSi/gocov-xml
  50. # Install tools "go vet" and "golint"
  51. RUN go get golang.org/x/tools/cmd/vet \
  52. && go get github.com/golang/lint/golint
  53. # Build standard library for race
  54. RUN go install -race std
  55. # Random build users needs to be able to create stuff in /go
  56. RUN chmod -R 777 /go/bin /go/pkg /go/src