git install не работает в Dockerfile

Я пытаюсь вытащить репозиторий, над которым я работаю во время сборки докера, поэтому я следовал этому руководству, поэтому добавил в свой 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

Что мне не хватает?

Ответы

Ответ 1

Вы переусердствуете это. Это просто опечатка. Должно быть:

RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y git

Это 3 отдельные команды.

Ответ 2

Некоторые мысли:

    1. Замените apt-get install git на apt-get install --assume-yes git. Без --assume-yes он запросит у вас подтверждение, которое вы не можете дать, и он будет достаточно умен, чтобы понять это и предположить, что вы имели в виду "НЕТ".
    1. Вы добавили ключ ssh, но подтвердили, что это был 0600. Я бы просто скопировал его и, в частности, chmod 0600 ~/.ssh/id_rsa, чтобы быть уверенным.

В целом, ваш Dockerfile выглядит очень умно, и я получил несколько свежих идей от его прочтения.