Как добавить «.env» в Jenkins через docker-compose

У меня есть приложение, которое можно запустить с помощью docker-compose. И этот файл docker-compose использует файл «.env» для получения всех секретных переменных. Теперь я хочу автоматизировать это с помощью CI/CD, используя Jenkins. Мой вопрос: как добавить файл «.env» в эту сборку, не делая файл env общедоступным?

Вот мой docker-compose.yml

version: "3"
services:
  my-app:
    image: j0sal/nextjs-13-login
    ports:
      - "3001:3000"
    env_file:
      - .env

Если возможно, я хочу сохранить файл .env специально для этой сборки. Это возможно?

Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
1
0
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы можете добавлять файлы в хранилище учетных данных Jenkins и получать к ним доступ в конвейерах, используя шаг withCredentials . Таким образом, конвейер будет выглядеть примерно так:

node('built-in') {
  withCredentials([file(credentialsId: 'secretFile', variable: 'SECRET_FILE')]) {
    sh '''
      docker compose up -d --env SECRET_FILE
      # do whatever you need to do with the containers
    '''
  }
}

И тогда файл docker-compose.yml будет ссылаться на переменную вместо жестко закодированного пути:

version: "3"
services:
  my-app:
    image: j0sal/nextjs-13-login
    ports:
      - "3001:3000"
    env_file:
      - "${SECRET_FILE}"

В идеале вы должны использовать secrets вместо env_file, но это уже другая тема.

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