Docker не смог скопировать файл (id_rsa) во время сборки - Версия 18.03.1-ce-win65 (17513) - PullRequest
0 голосов
/ 11 мая 2018

Привет, я новичок в Docker и пытаюсь обернуть голову о том, как клонировать частное репо с github, и нашел несколько интересных ссылок эмитентов / 6396

Я подписался на один из постов, и мой dockerfile выглядит как

FROM python:2.7 as builder

# Deploy app's code
#RUN set -x
RUN mkdir /code 
RUN mkdir /root/.ssh/
RUN ls -l /root/.ssh/

# The GITHUB_SSH_KEY Build Argument must be a path or URL
# If it's a path, it MUST be in the docker build dir, and NOT in .dockerignore!
ARG SSH_PRIVATE_KEY=C:\\Users\\MyUser\\.ssh\\id_rsa
RUN echo "${SSH_PRIVATE_KEY}"
# Set up root user SSH access for GitHub
ADD ${SSH_PRIVATE_KEY} /root/.ssh/id_rsa

RUN ssh -o StrictHostKeyChecking=no -vT git@github.com 2>&1 | grep -i auth
# Test SSH access (this returns false even when successful, but prints results)
RUN git clone git@github.com:***********.git
COPY . /code 
WORKDIR /code 

ENV PYTHONPATH /datawarehouse_process

# Setup app's virtualenv
RUN set -x \
&& pip install tox \
&& tox -e luigi
WORKDIR /datawarehouse_process


# Finally, remove the $GITHUB_SSH_KEY if it was a file, so it's not in /app!
# It can also be removed from /root/.ssh/id_rsa, but you're probably not 
going
# to COPY that directory into the runtime image.
RUN rm -vf ${GITHUB_SSH_KEY} /root/.ssh/id*

 #FROM python:2.7 as runtime
#COPY --from=builder /code /code

Когда я запускаю сборку Docker. из правильного местоположения я получаю эту ошибку ниже. Любая подсказка будет оценена.

 c:\Domain\Project\Docker-Images\datawarehouse_process>docker build .
Sending build context to Docker daemon  281.7MB
Step 1/15 : FROM python:2.7 as builder
 ---> 43c5f3ee0928
Step 2/15 : RUN mkdir /code
---> Running in 841fadc29641
Removing intermediate container 841fadc29641
---> 69fdbcd34f12
Step 3/15 : RUN mkdir /root/.ssh/
 ---> Running in 50199b0eb002
Removing intermediate container 50199b0eb002
---> 6dac8b120438
Step 4/15 : RUN ls -l /root/.ssh/
---> Running in e15040402b79
total 0
Removing intermediate container e15040402b79
---> 65519edac99a
Step 5/15 : ARG SSH_PRIVATE_KEY=C:\\Users\\MyUser\\.ssh\\id_rsa
---> Running in 10e0c92eed4f
Removing intermediate container 10e0c92eed4f
---> 707279c92614
Step 6/15 : RUN echo "${SSH_PRIVATE_KEY}"
---> Running in a9f75c224994
C:\Users\MyUser\.ssh\id_rsa
Removing intermediate container a9f75c224994
---> 96e0605d38a9
Step 7/15 : ADD ${SSH_PRIVATE_KEY} /root/.ssh/id_rsa
ADD failed: stat /var/lib/docker/tmp/docker- 
builder142890167/C:\Users\MyUser\.ssh\id_rsa: no such file or 
directory

1 Ответ

0 голосов
/ 11 мая 2018

Из Документации :

ДОБАВИТЬ подчиняется следующим правилам:

Путь должен быть внутри контекста сборки; Вы не можете ДОБАВИТЬ ../ что-то / что-то, потому что первый шаг сборки докера отправить каталог контекста (и подкаталоги) докеру демон.

Вы передаете абсолютный путь к ADD, но из ошибки видно:

/var/lib/docker/tmp/docker-builder142890167/C:\Users\MyUser\.ssh\id_rsa: 
no such file or directory

Он ищется для в контексте сборки . Опять из документации:

Традиционно Dockerfile называется Dockerfile и находится в корень контекста.

Итак, вам нужно поместить ключ RSA где-нибудь в дереве каталогов, корень которого находится по пути, указанному в вашей команде Docker build, поэтому, если вы вводите docker build ., оператор ARG изменится на что-то вроде:

ARG SSH_PRIVATE_KEY = .\.ssh\id_rsa
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...