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