Не могу развернуть 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 шт):
Фокус в том, как передать в команду 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
Вуа-ля. Репозиторий склонирован в образ.