如何将 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?