У меня есть приложение, которое можно запустить с помощью 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 специально для этой сборки. Это возможно?


Вы можете добавлять файлы в хранилище учетных данных 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, но это уже другая тема.