uni farm

golangのprivateリポジトリをdepで管理

githubのprivateなリポジトリをdepで管理してみる Gopkgファイルの生成など、コマンドは全てdocker上で行っていく

環境

  • docker: 18.03.1-ce
  • docker-compose: 1.21.1

gitの設定

privateなリポジトリからインストールできるようにする

sshキーの作成

Dockerfileと同じ階層に./sshフォルダを作って、sshキーを作成する

mkdir ssh
cd ssh
ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (~/.ssh/id_rsa): ./id_rsa

ls 
id_rsa		id_rsa.pub

githubページに登録

目的のprivateリポジトリにアクセスできるアカウントにて、

作成したid_rsa.pubの中身を 下ページのNew SSH keyから、新規登録する

https://github.com/settings/keys

Dockerfile作成

Dockerfileと同じ階層./src以下に実行したい.goファイルが入っているとき

Dockerfile
FROM golang:1.9-alpine

WORKDIR /go/src/app/src

# required to `go get` from private github repo
RUN apk update && apk upgrade && \
    apk add --no-cache git openssh
COPY ./ssh/id_rsa /root/.ssh/id_rsa
RUN chmod 700 /root/.ssh/id_rsa
RUN echo -e "Host github.com\n\tStrictHostKeyChecking no\n" >> /root/.ssh/config

COPY ./src /go/src/app/src

# using dep
RUN go get -u -v github.com/golang/dep/cmd/dep
RUN dep init \
    && dep ensure -v \
    && apk del git openssh

試す

docker-compose.yml
version: '3.3'
services:
  api:
    build:
      context: .
      dockerfile: Dockerfile

確認

docker-compose build
docker-compose run api /bin/sh

以下のコマンドはコンテナ内で実行している

ls -l
total 120
-rw-r--r--    1 root     root          5647 May 15 03:49 Gopkg.lock
-rw-r--r--    1 root     root          1503 May 15 03:49 Gopkg.toml
drwxr-xr-x    5 root     root          4096 May 15 03:49 vendor
...

dep status
PROJECT                          CONSTRAINT     VERSION        REVISION  LATEST   PKGS USED
github.com/xxx/xxxx              ^1.0.0         v1.0.0         xxxxxxx   unknown  29  
github.com/xxx/xxxx              ^1.0.0         v1.0.0         xxxxxxx   unknown  2   

各種ファイルが生成されていること、private含む、各種パッケージがインストールされていることが確認できるはず

参考

2022, Built with Gatsby. This site uses Google Analytics.