goのパッケージ管理ツールのdepに 自作のプライベートリポジトリを登録している状態で Docker上で、dep ensureすると Githubの認証に弾かれます。 それを解決する方法です。
基本的には
dep公式のFAQに書いてある通りです。
depは、 .netrc を頼りにGithubの認証を解決するので、これをDockerfileで作って上げます。
ただ、FAQに書かれているフォーマットは
machine github.com
login [YOUR_GITHUB_USERNAME]
password [YOUR_GITHUB_TOKEN]
ですが、これだとうまく行かなかったので
machine github.com
login [YOUR_GITHUB_TOKEN]
という形にしています。
Dockerfileはこんな感じになります
FROM golang:alpine
RUN apk --update add tzdata git && \
: "depのインストール" \
mkdir -p $$GOPATH/bin && \
go get github.com/golang/dep/cmd/dep
ADD . /go/src/github.com/foo/bar
WORKDIR /go/src/github.com/foo/bar
EXPOSE 8080
CMD echo machine github.com > /root/.netrc && \
echo login [YOUR_GITHUB_TOKEN] >> /root/.netrc && \
dep ensure -vendor-only