Docker: go get from a private GitHub repo

后端 未结 4 1055
天涯浪人
天涯浪人 2021-02-19 06:17

I\'m trying to run a container that will expose a golang service from a package that I have on a private GitHub repo.

Since I am working with GCE, my starter image is g

4条回答
  •  广开言路
    2021-02-19 07:19

    Elaborating on OneOfOne's ~/.netrc answer, this is what I am doing with Jenkins on linux:

    FROM golang:1.6
    
    ARG GITHUB_USER=$GITHUB_USER
    ARG GITHUB_PASS=$GITHUB_PASS
    
    # Copy local package files to the container's workspace.
    ADD . /go/src/github.com/my-org/my-project
    WORKDIR /go/src/github.com/my-org/my-project/
    
    # Build application inside the container.
    RUN echo "machine github.com\n\tlogin $GITHUB_USER\n\tpassword $GITHUB_PASS" >> ~/.netrc && \
        go get github.com/tools/godep && \
        go get github.com/onsi/ginkgo/ginkgo && \
        godep restore && \
        ginkgo -r --randomizeAllSpecs --randomizeSuites --failOnPending && \
        godep go install && \
        rm -f ~/.netrc
    
    ENTRYPOINT /go/bin/my-project
    
    EXPOSE 8080
    

    The docker build command is:

    docker build \
        --build-arg GITHUB_USER=xxxxx \
        --build-arg GITHUB_PASS=yyyyy \
        -t my-project .
    

    The two ARG directives map --build-args so docker can use them inside the Dockerfile.

    The first and last lines of RUN create and remove the ~/.netrc.

    In Jenkins, I use the same creds from git pull in the build command.

    In this strategy, the password is not echoed during the docker build process and not saved on any layer of your docker image. Also note that the gingko test results are printed to console during the build.

提交回复
热议问题