Оптимизация кэширования уровня Docker для частных пакетов PHP/Laravel с помощью многоэтапных сборок и секретов BuildKitPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Оптимизация кэширования уровня Docker для частных пакетов PHP/Laravel с помощью многоэтапных сборок и секретов BuildKit

Сообщение Anonymous »

Я пытаюсь оптимизировать многоэтапную сборку Docker для приложения Laravel, которому требуются частные пакеты GitHub. У меня есть две основные проблемы, которые я не могу эффективно решить:
Кеширование и секреты: я использую секреты комплекта сборки Docker (--mount=type=secret), чтобы передать свой токен GitHub для установки композитора. Однако каждый раз, когда я меняю секретный или даже некоторые несвязанные файлы, уровень установки композитора перезапускается, что очень медленно. Как я могу гарантировать, что установка композитора останется в кэше, пока композитор.lock не будет изменен, даже при использовании секретов?
Безопасное многоуровневое представление: я хочу, чтобы учетные данные частного репозитория никогда не попадали в окончательный образ или историю промежуточного уровня.
Вот моя текущая структура Dockerfile:

Код: Выделить всё

Dockerfile
# syntax=docker/dockerfile:1
FROM php:8.2-fpm-alpine AS builder

WORKDIR /app

# Install system dependencies
RUN apk add --no-cache git unzip

# Copy dependency files
COPY composer.json composer.lock ./

# The problem layer:
RUN --mount=type=secret,id=composer_auth,target=/root/.composer/auth.json \
composer install --no-dev --optimize-autoloader --no-scripts

COPY . .

# Final Stage
FROM php:8.2-fpm-alpine
COPY --from=builder /app /var/www
Мои вопросы:
Существует ли особый способ монтирования секрета, чтобы он не делал недействительным кеш без необходимости?
Должен ли я использовать отдельный RUN для монтирования кеша (type=cache,target=/root/.composer/cache) наряду с монтированием секрета?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»