docker - 使用 jenkins 和 docker 部署到服务器
问题描述
嘿,我目前正在学习用于 CI 和 CD 的 Jenkins 管道 我已通过 Jenkins 在本地机器上成功部署了我的 express js 在本地机器上我的服务器它是用于服务器的,我的 ENV 在我的公共存储库上被炫耀我在这里试图了解更多如何隐藏它我的詹金斯上的 ENV?那使用变量并且可以在 Dockerfile 上使用变量来隐藏我的 ENV 吗?
在我的 Jenkins 管道上,我在 docker run -p -e myEnV=key 上运行我的 ENV 我确实喜欢隐藏我的 ENV,所以人们不知道我在 Jenkinsfile 和 Dockerfile 中的密钥我在 jenkins 中使用多个分支,因为我遵循在hackernoon 上使用Jenkins 部署react 和node js 应用程序的文章
无论如何,将我们的容器或镜像推送到 Docker Hub 有什么好处?如果我们将它推送到那里并且如果我们想将我们的服务器移动到另一台服务器我们只需要将我们的 repo Docker Hub 拉到新服务器上,因为我们每次推送到我们的 repo Docker Hub 时都会构建它,对吗?
解决方案
对于您的第一个问题,您应该使用EnvInject Plugin。或者如果您从管道运行 Docker,则在 Jenkins 中设置环境变量,然后在 Docker 运行命令中访问这些环境变量。
在管道中,您可以像这样访问环境变量
${env.DEVOPS_KEY}
所以你的 Docker 运行命令将是
docker run -p -e myEnV=${env.DEVOPS_KEY}
但请确保您已DEVOPS_KEY
在 Jenkins 服务器中设置。
使用 EnvInject 非常简单。
您也可以从文件中注入。
对于您的第二个问题,是的,只需从 docker-hub 拉取图像并使用它。
您团队中的任何人都可以拉取和运行,因此只有 Jenkins 服务器会构建和推送映像。因此,它将为其他人节省时间,并且图像将是最新的,并且也可以远程使用。
切勿在 Docker 映像中推送或保留敏感数据。
推荐阅读
- python - 使用 SQLalchemy 在数据库中存储数组
- django - 如何在 django 的一个表单/视图中创建两个通过外键相互关联的对象?
- office-js - 如何启用/禁用功能区命令 officejs
- javascript - 如何在反应中从提供者返回承诺
- java - AndroidViewModel 没有零参数构造函数
- javascript - Problem adding a pause/play to responsive slider / carousel. JS CSS HTML No bootstrap or Jquery
- c# - 如何在该 C# 代码中交替更改变量?
- sql - 如何匹配列数,如果大于 2,则更新 postgresql 中的表
- c# - 如何将对象列表转换为对象列表数组,每个数组索引都有 2 个计数?
- python - 图表中线和散点的混合