Образ сборки Docker жалуется на: fatal: не репозиторий git (или любой из родительских каталогов): .git - PullRequest
0 голосов
/ 12 ноября 2018

Я использую этот контент Dockerfile:

FROM ubuntu:18.04
RUN apt-get update 
RUN apt-get install git -y
RUN git clone https://code.qt.io/qt/qt5.git /cloned-qt    
RUN cd /cloned-qt/   
RUN git checkout 5.11
RUN git pull

После того, как я запустил мою команду образа сборки:

sudo docker build -t qt5.11-auto:v1 .

Я получаю это сообщение об ошибке:

Sending build context to Docker daemon  4.608kB
Step 1/10 : FROM ubuntu:18.04
 ---> ea4c82dcd15a
Step 2/10 : RUN apt-get update
 ---> Using cache
 ---> 60e7c61ea78c
Step 3/10 : RUN apt-get install git -y
 ---> Using cache
 ---> 50a4def0607e
Step 4/10 : RUN git clone https://code.qt.io/qt/qt5.git /cloned-qt
 ---> Using cache
 ---> 97fb8ab6dc15
Step 5/10 : RUN cd /cloned-qt/
 ---> Running in 9be03fba40fa
Removing intermediate container 9be03fba40fa
 ---> 130bc457eb66
Step 6/10 : RUN git checkout 5.11
 ---> Running in 35de823fdf9c
fatal: not a git repository (or any of the parent directories): .git

После этого неудачного шага, когда я запускаю контейнер и выполняю те же команды, мне удается их успешно запустить. В чем причина того, что сборке Docker не удалось запустить команду "git checkout", но при запуске внутри контейнера она работает?

Ответы [ 3 ]

0 голосов
/ 12 ноября 2018

изменить команду «RUN cd / cloned-qt /» на «WORKDIR cloned-qt» и будет работать как положено

0 голосов
/ 12 ноября 2018

объедините шаги 5 и 6 в один слой, как показано ниже.

RUN cd / cloned-qt / && git checkout 5.11

0 голосов
/ 12 ноября 2018

Каждый раз, когда вы делаете RUN, docker создает новый временный контейнер для его запуска, поэтому команда, подобная cd, не действует.

Do

WORKDIR /cloned-qt/

вместо

RUN cd /cloned-qt/

...