Управление несколькими учетными записями GitHub (ключи ssh) для Composer требуют в DDEV под WSL2

я добавил вторые 2 ключа ssh и добавил необходимую конфигурацию в Ubuntu WSL2 ~/.ssh

      Host github-key2
        HostName github.com
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/key2

поэтому в UBUNTU это работает:

    git clone git@github-key2:vendor/repoxxx.git 

Но мне нужно запустить это в ddev с композитором:

Я добавил git@github-key2:vendor/repoxxx.git в разделе репозиториев композитора так же, как я сделал это для других защищенных репозиториев

    "vendor/repoxxx": {
        "type": "vcs",
        "url": "git@github-key2:vendor/repoxxx"
    }

ddev авторизация ssh (оба ключа добавлены)

но композитор в DDEV просто использует обычный ключ "id_rsa", а не второй "key2"

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

Ответы 2

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

Вам нужно поместить в контейнер файл .ssh/config. Обычный способ сделать это — поместить нужный .ssh/config в homeadditions либо в проекте, либо в global homeadditions.

Документы по homeadditions находятся по адресу https://ddev.readthedocs.io/en/latest/users/extend/in-container-configuration/

Для некоторых людей работает просто символическая ссылка или копирование их .ssh/config на стороне хоста, но в большинстве ситуаций вам потребуется собственный .ssh/config для использования внутри контейнера.

Вы устанавливаете или обновляете зависимости композитора в среде, в которой ваша конфигурация SSH недоступна.

Вместо того, чтобы запускать композитор в этой среде, просто разверните зависимости вашего проекта из рабочей среды в среду выполнения. Для Composer достаточно рекурсивной копии vendor-dir, по умолчанию это vendor.

Например. если вы используете виртуальные машины или контейнеры Docker для разработки, вы монтируете папку поставщика (должна быть монтирована только для чтения), и обычно все готово.

Есть предостережение: платформа PHP в вашем блоке разработки может отличаться от целевой платформы PHP проекта (например, другая версия PHP также может появиться позже, когда вы обновите свой блок разработки).

Если это так, сделайте целевую платформу явно видимой в файле конфигурации вашего проекта (composer.json по умолчанию), чтобы у вас это было должным образом задокументировано, а композитор получал зависимости в правильных версиях целевой платформы и знал, какие расширения PHP и версии библиотек доступны там.

TLDR: продолжайте разрешать зависимости вне процесса размещения приложения, начиная с самой ранней версии. Среда выполнения не должна ничего знать об использовании вашего композитора или конфигурации SSH и не должна полагаться на это.

Еда на вынос:

Проведите эту грань между сборкой и средой выполнения заранее, так как часто она не сразу видна разработчикам, которые сосредоточены только на определенной технической проблеме, хотя она существует с самого начала. Если он остается скрытым в течение более длительного времени, это может привести к тому, что о нем узнают только позже, что приведет к позднему исправлению конфигурации и других недостатков приложения в проекте. Недостатки, о которых вы узнаете поздно, приводят к самым высоким затратам.

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