2013-10-28 17 views
17

Tôi đang cố gắng sao chép kho git riêng từ github. Tôi đã làm một Dockerfile như thế này:Dockerfile để nhân bản riêng git repo

FROM ubuntu:12.04 

RUN apt-get update 
RUN apt-get install -y git 
RUN mkdir -p /root/.ssh/ 
ADD ./id_rsa /root/.ssh/id_rsa 
RUN git clone [email protected]:usr/repo.git 

Tôi sử dụng repo này với phím này chỉ tốt tại địa phương, vì vậy có vẻ như tôi đang thiếu một cái gì đó bên trong docker.

Một điều nữa tôi có thể bị thiếu là cả hai ~$HOME bên trong điểm bến tàu tới / thay vì /root, nhưng tôi không chắc liệu điều đó có thể liên quan hay không.

Trả lời

20

Đầu ra của quá trình xây dựng là gì?

Đoán ngẫu nhiên: thử chmod 600 khóa cá nhân.

Nếu vẫn không hoạt động, hãy thử RUN ssh -v [email protected] (sau khi thêm khóa); đầu ra nên giải thích những gì đang xảy ra.

+0

Cảm ơn bạn. Vấn đề là nó không thể mở tty để hỏi tôi về "known_hosts" có/không. '-v' để hiển thị thông tin gỡ lỗi là một lời khuyên tuyệt vời. –

+0

Bạn đã thực sự giải quyết nó như thế nào? Bằng cách thêm máy chủ lưu trữ vào known_hosts trong Dockerfile? –

+3

Một khả năng sẽ là sử dụng 'ssh-keyscan github.com >> ~/.ssh/known_hosts', vâng! Hoặc thực hiện lần đăng nhập đầu tiên với '-o StrictHostKeyChecking = no' (điều này sẽ dẫn đến kết quả tương tự, nhưng sẽ là idempotent). – jpetazzo

14

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

Các công trình keyscan vĩ đại vì nó chấp nhận dẫn chương trình. Câu trả lời hoàn chỉnh sau làm việc:

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 

Cũng như đã đề cập:

RUN ssh -v [email protected] 

^Cách tuyệt vời để gỡ lỗi các dòng chảy. Đó là cách tôi nhận ra tôi cần keyscan >> known_hosts

+0

Cảm ơn - điều này phù hợp với tôi! – bonesbrigade

1

(có thể sẽ không phù hợp với nhu cầu của bạn)

Có cách tiếp cận khác: https://stackoverflow.com/a/29464430/990356

Đến Settings > Personal access tokens và tạo ra một thẻ truy cập cá nhân với repo phạm vi cho phép . Bây giờ bạn có thể làm git clone https://[email protected]/user-or-org/repo

Ưu điểm:

  • rất đơn giản tiếp cận
  • thẻ có thể dễ dàng thu hồi

Nhược điểm:

  • nếu ai đó có quyền truy cập vào các Dockerfile anh ấy có quyền truy cập vào mã thông báo

Để khắc phục điều này, bạn có thể sử dụng biến môi trường để lưu mã thông báo

Các vấn đề liên quan