首页 > 解决方案 > 使用 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 时都会构建它,对吗?

标签: dockerjenkinsjenkins-pipelinedockerfile

解决方案


对于您的第一个问题,您应该使用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 映像中推送或保留敏感数据。


推荐阅读