Ответ 1
Вы переусердствуете это. Это просто опечатка. Должно быть:
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y git
Это 3 отдельные команды.
Я пытаюсь вытащить репозиторий, над которым я работаю во время сборки докера, поэтому я следовал этому руководству, поэтому добавил в свой Dockerfile
# this is our first build stage, it will not persist in the final image
FROM ubuntu as intermediate
# install git
RUN apt-get update \
apt-get upgrade \
apt-get install git
# add credentials on build
RUN mkdir ~/.ssh && ln -s /run/secrets/host_ssh_key ~/.ssh/id_rsa
# make sure your domain is accepted
RUN touch /root/.ssh/known_hosts
RUN ssh-keyscan github.org >> /root/.ssh/known_hosts
RUN git clone [email protected]:my-repo/myproject.git
FROM ubuntu
# copy the repository form the previous image
COPY --from=intermediate /your-repo /srv/your-repo
В своем docker-compose.yml
я добавил
secrets:
host_ssh_key:
file: ~/.ssh/id_rsa
И я добавляю
secrets:
- host_ssh_key
В одном из сервисов.
Так как это только для моего локального использования (я не планирую развертывать или использовать это для производства, я просто хочу проверить это), можно использовать его таким образом - если это будет работать, потому что в настоящее время сборка завершается неудачно этап установки git с ошибкой
E: команда обновления не принимает аргументов
ОШИБКА: не удалось создать службу 'web': команда '/bin/sh -c apt-get update apt-get upgrade apt-get install git' вернула ненулевой код: 100
Что мне не хватает?
Вы переусердствуете это. Это просто опечатка. Должно быть:
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y git
Это 3 отдельные команды.
Некоторые мысли:
apt-get install git
на apt-get install --assume-yes git
. Без --assume-yes
он запросит у вас подтверждение, которое вы не можете дать, и он будет достаточно умен, чтобы понять это и предположить, что вы имели в виду "НЕТ".0600
. Я бы просто скопировал его и, в частности, chmod 0600 ~/.ssh/id_rsa
, чтобы быть уверенным.В целом, ваш Dockerfile выглядит очень умно, и я получил несколько свежих идей от его прочтения.