Docker: How to access to a private github repo using ssh?

I’m trying to clone a private repo from github using Docker. The problem is that I need to use ssh to access to that repo. I added a key in my github project’s setting which is used, I suppose, to identify the docker‘s server.

My problem is that I can’t figure out what I should write in my Dockerfile so that the server use that key when it tries to access to my github repo. I saw examples where id_rsa is added to the container, but I don’t know where id_rsa is stored on their server, if it exists

  • Not getting Docker to run from within Jenkins
  • Pre-configured Environment Variable in Jenkins
  • Docker Hub - Automatic build on tag with regex match not triggered
  • invalid credentials - LDAP access error in git community edition
  • Kubernetes plugin containers can't connect back to Jenkins
  • Docker error: Unable to locate package git
  • RUN mkdir /root/.ssh/
    # can't find the file id_rsa
    ADD id_rsa /root/.ssh/id_rsa 
    RUN touch /root/.ssh/known_hosts
    RUN ssh-keyscan github.com >> /root/.ssh/known_hosts
    
    run git clone git@github.com:user/repo.git
    

    How do I access to my private repo from docker’s server ?

  • Commit directly to a bare repository
  • Reset without losing already committed files
  • In Gerrit, how can I prevent a patch set from being submitted that is not completely up-to-date?
  • git clone produces different permissions on different servers
  • Getting OpenCV2.4.2 with GIT for Windows
  • How to pull a branch deletion in git?
  • 2 Solutions collect form web for “Docker: How to access to a private github repo using ssh?”

    If you want to use git from the Dockerfile, you need to configure the container in the same way as you would configure your own development machine.

    I can’t really understand which is “their” in “their server”, so I’m just guessing.

    When you registered a public key with github, you should have got the private key too. That’s the id_rsa that you see in other examples.

    If you can not locate that file, just start over. Delete the old key, generate a new one and configure it on github and on your docker build context (in your example, just copy it in the same folder as the Dockerfile).

    As a different strategy, you might want to do the checkout outside of the image build process (clone locally and ADD everything to the image).

    I managed to do this by using ssh-add on the key.

    A “problem” with using multiple RUN instructions is that non-persistent data won’t be available at the next RUN. I managed to log in and use github private repos with

    RUN eval `ssh-agent -s` && \
        ssh-add id_rsa && \
        git clone git@github.com:user/repo.git
    

    By using the &&‘s on a single CMD, the eval process will still be running and ssh-agent has the key loaded when you connect to github.

    I hope this helps.

    Git Baby is a git and github fan, let's start git clone.