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

  • Can I use a Github repository as the source of a Docker image?
  • Docker Hub - Automatic build on tag with regex match not triggered
  • git clone project from inside docker container
  • How to get Docker to run on a Windows System behind a corporate firewall?
  • Switching users inside Docker image to a non-root user
  • docker autobuild with git private submodule
  • 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 ?

  • Heroku deployment, git remote not added
  • What is the correct way with NPM to package a BUILT version of a forked Git repository?
  • Build job jenkins at specific commit to bitbucket
  • TortoiseGit and Pageant, have to “add key” every time
  • Is Git grafting dangerous?
  • Git: pre-receive hook with PHP_CodeSniffer
  • 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.