#docker #docker-compose #repository #private
#docker #docker-compose #репозиторий #Частное
Вопрос:
Выполнение команд локально с частными репозиториями тривиально, и эта часть в порядке.
Что я пытаюсь сделать, так это убедиться, что Docker используется через Makefile в качестве стандартного элемента для запуска проектов.
В настоящее время я пытаюсь заставить Docker устанавливать частные пакеты. Нет возможности для VPN и размещения нашего собственного сервиса git, такого как gitlab или bitbucket, которые приводят к невозможности установки частных пакетов в Docker compose.
Есть два способа обойти это, с которыми я столкнулся и успешно заработал:
- Скопируйте мой SSH-ключ в поле и запустите его внутри этого контейнера
- Скопируйте файл auth.json /.npmrc и так далее в контейнер
Оба из них связаны с проблемами:
- Если кто-то использует контейнер или отправляет его в репозиторий пакетов, то его SSH-ключ потенциально скомпрометирован, и ему потребуется перезагрузить и, возможно, обновить все серверы / службы, которые они используют для доступа
- Файлы auth.json / .npmrc представляют меньший риск, поскольку токен аутентификации может быть доступен только для чтения и легко сгенерирован заново без значительного воздействия
В данный момент я рассматриваю PHP Composer в качестве рабочего примера, где мой файл docker compose выглядит следующим образом:
version: "2.0"
services:
composer:
image: composer
volumes:
- ./.composer/auth.json:/tmp/auth.json
- .:/app
working_dir: /app
php:
image: php:7.2-fpm-alpine
volumes:
- .:/app
working_dir: /app
Это работает нормально, но нужно добавить что-то, чтобы удалить эту команду auth.json post, например docker-compose run --rm composer install
. Можно ли запустить команду типа «post_run» в docker-compose?
Ответ №1:
Недавно я настроил private packagist, который решает одну из проблем, которые вы описали.
Использование токена, который передается как частная переменная в CI, и у каждого члена команды есть свой индивидуальный токен, который они тоже могут использовать.