В Docker Hub есть раздел «Конфигурации сборки», в котором можно указать переменные среды сборки:
Проблема в том, что значение переменной отображается в виде открытого текста, что делает этот механизм непригодным для переменных, содержащих конфиденциальную информацию (например, пароли).
Я думал о чем-то похожем на механизм секретов в GitHub, который позволяет определять переменные, значение которых отображается только один раз (в момент их создания), но в дальнейшем может использоваться в действиях GitHub столько раз, сколько вы захотите.
Есть ли способ определить переменные сборки в Docker Hub, не показывая значение в интерфейсе? Или любой другой подходящий обходной путь?
@jonrsharpe спасибо за отзыв! Как вы говорите, в 99% случаев я использую секрет во время выполнения :) Но в этом случае мне нужно получить некоторые артефакты сборки из внешнего репозитория во время сборки (и доступ к этому репозиторию защищен учетными данными), так что мне нужен секрет во время сборки...





Учитывая, что, похоже, в пространстве DockerHub для этой проблемы нет решения, я выбрал обходной путь решения этой проблемы с помощью GitAction. Что-то вроде этого:
name: Publish Docker image (master)
on:
push:
branches:
- master
jobs:
build-and-push:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2
- name: Log in to Docker Hub
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKERHUB_TEF_USERNAME }}
password: ${{ secrets.DOCKERHUB_TEF_TOKEN }}
- name: Build Docker image
run: docker build -t telefonicaiot/fiware-orion:latest --build-arg GIT_REV_ORION=master --build-arg REPO_ACCESS_TOKEN=${{ secrets.REPO_ACCESS_TOKEN }} --no-cache -f docker/Dockerfile .
- name: Push Docker image
run: docker push telefonicaiot/fiware-orion:latest
Где secrets.REPO_ACCESS_TOKEN хранит секрет, который я не могу использовать в dockerhub.
Не вставляйте секреты в изображения, предоставляйте их во время выполнения. Используйте секретные крепления для вещей, которые должны быть доступны во время (и только во время) сборки.