Используйте SSH-ключи хоста для доступа к закрытому репозиторию Git в DockerFile

Я новичок в Docker и пытаюсь создать свое веб-приложение Angular и запустить его в контейнере.

У меня есть очень простой Dockerfile в корне проекта:

# Create the image based on the official Node 10.13.0 image from Dockerhub
FROM node:10.13.0 as node

# Copy dependency definitions
COPY package.json .

# Install dependencies using npm
RUN npm install

# TODO - copy rest of app and run angular-cli build commands to serve up the app

И после запуска команды сборки против него я получаю следующую ошибку:

Используйте SSH-ключи хоста для доступа к закрытому репозиторию Git в DockerFile

Изучив эту ошибку, я понял, что я еще не предоставил никаких данных о ключах хоста с моего хост-компьютера, поэтому их можно использовать для доступа к частному репо.

Я нашел здесь несколько старых ответов о подходах к предоставлению данных ключа моего хоста, таких как Вот этот, но я не продвинулся дальше, по-прежнему получая ту же ошибку.

Я смог подтвердить, что правильно ссылаюсь на свой ключ хоста, повторив их в моем файле докеров и просмотрев подробности в моем терминале.

Во всяком случае, я не уверен, какой правильный или официальный способ сделать это.

Я использую Docker 2.0.0.0-maxc78 и на macOS High sierra

Может ли кто-нибудь указать мне в правильном направлении, какой правильный подход здесь, пожалуйста?

Спасибо!

Стоит ли изучать 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 называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
1 581
1

Ответы 1

Такой сценарий выиграет от недавнего docker build secret.

docker build --secret id=mysite.key,src=path/to/mysite.key .

Это используется в вашем Dockerfile как:

# syntax=docker/dockerfile:1.0.0-experimental

FROM alpine

RUN --mount=type=secret,id=mysite.key command-to-run

Узнайте больше с помощью «Секреты сборки и перенаправление SSH в Docker 18.09» (ваш докер 2.0.0 должен его поддерживать)

В вашем случае ваш Dockerfile должен включать:

RUN --mount=type=ssh git clone [email protected]:myorg/myproject.git myproject

On the docker client side, you need to define that SSH forwarding is allowed for this build by using the --ssh flag.

docker build --ssh default .

The flag accepts a key-value pair defining the location for the local SSH agent socket or the private keys.

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