如何将 Github Secret 作为环境变量传递给 Docker?

Posted

技术标签:

【中文标题】如何将 Github Secret 作为环境变量传递给 Docker?【英文标题】:How to pass a Github Secret as Environment Variable to Docker? 【发布时间】:2021-11-06 00:55:18 【问题描述】:

我开始使用 CI/CD 和 Docker,我想在我的工作流文件中将连接字符串传递给 docker。

deploy:
    runs-on: ubuntu-latest
    needs: publish
    steps:
    - name: deploy to server
      uses: appleboy/ssh-action@master
      env: 
        CONN_STRING: $ secrets.CONN_STRING 
      with:
        host: $ secrets.SECRET_IP 
        username: $ secrets.SERVER_USERNAME 
        key: $ secrets.SERVER_KEY 
        port: 22
        script: docker stop *** && docker rm **** && docker pull **** && docker run --env CONN_STRING=$CONN_STRING -d --name ******

如您所见,我创建了一个名为“CONN_STRING”的环境,它从我的 github 机密中获取连接字符串。之后我想通过“CONN_STRING = $CONN_STRING”将它传递给dockerscript。然而,自从我添加了这个之后,我的 docker 一直在崩溃。有人知道我在做什么错吗? **** 只是我的项目的名称,我想保密。

【问题讨论】:

你可以使用.gitlab-ci.yml来做到这一点 【参考方案1】:

您可以在FROM 步骤之后添加arg:

ARG CONN_STRING
ENV connection_string=$CONN_STRING

然后将其传递给 docker build 命令'--build-arg CONN_STRING=$CONN_STRING'

然后在 dcoker 文件中,您可以将连接字符串称为 $connection_string

【讨论】:

【参考方案2】:

原来你可以跳过 yml 中的环境变量并使用

CONN_STRING=$ secrets.CONN_STRING 

【讨论】:

以上是关于如何将 Github Secret 作为环境变量传递给 Docker?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Spring Boot 将来自 Google Secret Manager 的秘密作为环境变量注入 Kubernetes Pod?

django.core.exceptions.ImproperlyConfigured:设置 SECRET_KEY 环境变量

如何在已部署的 Cloud Run Service(托管)中使用 Google Secret?

RMarkdown:如何将参数传递给在 R 中定义为变量的 bash 块?

configMap和secret

configMap和secret