Не могу развернуть Docker контейнер с приватной библиотекой Golang

У меня есть два приватных репозитория на гитхабе, второй я использую как библиотеку в первом. Оба приватные.

Я создал deploy key, паблик-ключ с rsa- положил туда, приватный во втором лежит просто в корне проекта, далее я его копирую в контейнере и пытаюсь напрямую установить через гит клон, тк через https просто так не получается и го просит использовать ssh.

Но мне пишет что доступа нет, бьюсь уже 2 дня пишу вам, помогите, вот текущий docker файл.

key_pb - это если что не паблик, а протобаф библиотека типо

FROM golang:1.24 AS builder

RUN apt-get update && apt-get install -y make

WORKDIR /app

COPY ./key_pb /root/.ssh/key_pb
RUN ls /root/.ssh/

RUN ssh-keyscan github.com >> /root/.ssh/known_hosts

RUN cat /root/.ssh/known_hosts
RUN ssh -T [email protected]

RUN git clone [email protected]:linus/torvalds.git .

COPY go.mod go.sum ./

RUN go mod download

COPY . .


RUN go build -o main ./cmd

EXPOSE 8096
EXPOSE 8095

CMD ["make", "migrate_pg", "&&", "make", "migrate_ch", "&&", "./main"]

Ответы (1 шт):

Автор решения: Pak Uula

Фокус в том, как передать в команду ssh опции:

  • использовать ваш ключ для соединения с сервером
  • не требовать подтверждения незнакомого сервера

Для этого достаточно задать переменную GIT_SSH_COMMAND. Если эта переменная не пуста, то git запускает её как команду вместо ssh.

У вас зарегистрирован публичный ключ в github, верно? Сохраните соответствующий ему приватный ключ в /root/.ssh/github-key и выполните вот такую команду:

GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=accept-new -i /root/.ssh/github-key"\
  git clone [email protected]:your-user/your-repo.git

Опции:

  • StrictHostKeyChecking=accept-new автоматически добавит незнакомый сервер в known-hosts, не спрашивая подтверждение,
  • -i /root/.ssh/github-key использует указанный ключ при подключении.

Как это может быть в докер-файле:

FROM golang:1.24 AS builder

RUN apt-get update && apt-get install -y make

WORKDIR /app

RUN mkdir /root/.ssh

COPY github-key /root/.ssh/

RUN bash -c 'GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=accept-new -i /root/.ssh/github-key" git clone [email protected]:your-user/your-repo.git'

Пруф:

#7 [3/6] WORKDIR /app
#7 DONE 0.0s

#8 [4/6] RUN mkdir /root/.ssh
#8 DONE 0.3s

#9 [5/6] COPY github-key /root/.ssh/
#9 DONE 0.1s

#10 [6/6] RUN bash -c 'GIT_SSH_COMMAND="ssh -o StrictHostKeyChecking=accept-new -i /root/.ssh/github-key" git clone [email protected]:your-user/your-repo.git'
#10 0.312 Cloning into 'your-repo'...
#10 0.922 Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
#10 DONE 2.6s

Вуа-ля. Репозиторий склонирован в образ.

→ Ссылка