ssh - Dockerfile for cloning private git repo

ID : 274321

viewed : 36

Tags : sshdockerssh





Top 5 Answer for ssh - Dockerfile for cloning private git repo

vote vote

100

What's the output of the build process?

Random guess: try to chmod 600 the private key.

If it still doesn't work, try to RUN ssh -v git@github.com (after adding the key); the output should explain what's happening.

vote vote

80

RUN ssh-keyscan github.com >> ~/.ssh/known_hosts

The keyscan works great since it accepts the host. The following complete answer worked:

RUN mkdir -p /root/.ssh RUN cp /var/my-app/id_rsa /root/.ssh/id_rsa RUN chmod 600 /root/.ssh/id_rsa RUN ssh-keyscan github.com >> /root/.ssh/known_hosts 

Also as mentioned:

RUN ssh -v git@github.com 

^ Great way to debug the flow. That's how I realized I needed the keyscan >> known_hosts

vote vote

79

(Will probably not fit your needs)

There is another approach: https://stackoverflow.com/a/29464430/990356

Go to Settings > Personal access tokens and generate a personal access token with repo scope enabled. Now you can do git clone https://MY_TOKEN@github.com/user-or-org/repo

Pros:

  • very simple approach
  • token can be easily revoked

Cons:

  • if someone has access to the Dockerfile he has access to the token

To fix this, you can use an environment variable to store the token

vote vote

70

Below approach is using https with Personal Access Token, and it works like charm.

ARG git_personal_token RUN git config --global url."https://${git_personal_token}:@github.com/".insteadOf "https://github.com/" RUN git clone https://github.com/your/project.git /project 

Then, supply a docker argument as below.

docker build --build-arg git_personal_token={your_token} . 

Basic idea is from https://medium.com/paperchain/fetching-private-github-repos-from-a-docker-container-273f25ec5a74

vote vote

56

Top 3 video Explaining ssh - Dockerfile for cloning private git repo







Related QUESTION?