如何通过 docker-compose 在 Jenkins 中添加“.env”

问题描述 投票:0回答:1

我有一个可以通过 docker-compose 启动的应用程序。该 docker-compose 文件使用“.env”文件来获取所有秘密变量。现在我想使用 Jenkins 通过 CI/CD 实现自动化。我的问题是如何在该构建中添加“.env”文件而不公开 env 文件?

这是我的 docker-compose.yml

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

如果可能的话,我想保留特定于该构建的 .env 文件。这可能吗?

docker jenkins docker-compose environment-variables cicd
1个回答
0
投票

您可以将文件添加到 Jenkins 凭证存储并使用

withCredentials
step 在管道中访问它们。所以管道看起来像这样:

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,但这是一个不同的主题。

© www.soinside.com 2019 - 2024. All rights reserved.