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: The update command takes no arguments

ERROR: Service 'web' failed to build: The command '/bin/sh -c apt-get update apt-get upgrade apt-get install git' returned a non-zero code: 100

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

Есть ли шанс принять ответ? Таким образом, это указывает другим, что какое-то решение было полезно для вас. Было бы здорово, если бы вы ответили на все ваши вопросы.

Alex Karshin 16.04.2019 12:22

Конечно, хотя в итоге я поступил иначе. Спасибо за помощь :)

dingo_d 16.04.2019 14:53
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
44
2
58 619
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Вы слишком много это анализируете. Это просто опечатка. Должно быть:

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

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

Все еще получаю The command '/bin/sh -c apt-get update && apt-get upgrade && apt-get install git' returned a non-zero code: 1

dingo_d 13.06.2018 15:18

Другой вопрос, теперь apt-get install ждет, пока вы отправите установку. Поэтому вам следует добавить -y после install. Из вашей опечатки мне кажется, что вы не умеете работать с Linux. Может стоит почитать все вокруг apt-get?

Alex Karshin 13.06.2018 16:07

Я попробую с флагом, но в целом я, вероятно, просто пропущу git clone в процессе сборки. По крайней мере, это то, что делают DevOps. Я просто тестирую докер, а не моя основная область знаний: D

dingo_d 13.06.2018 18:26

в узле: alpine: RUN apk update && \ apk upgrade && \ apk add git

itzhar 18.07.2019 00:21

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

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

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

Просто прочтите руководство - очень хорошо. Они используют переключатель -y. Пользуюсь переключателем --assume-yes. Это синонимы, и я думаю, это то, чего вам не хватает. Если вы предоставили действительный файл id_rsa, то мой второй пункт неприменим.

emory 13.06.2018 15:53

ваше изменение вопроса должно быть отменено, оно явно противоречит намерениям автора.

Alex Karshin 13.06.2018 16:12

Для тех, кто работал с образами alpine, RUN apk add --no-cache git помог мне.

Спасибо, это сэкономило время. Пожалуйста, почему вы использовали --- no-cache?

Trapcode 11.04.2021 14:20

Другие вопросы по теме